Pertanyaan Apa artinya "var" dalam C #? [duplikat]


Kemungkinan Duplikat:
Penggunaan kata kunci var di C # 

Di C #, bagaimana kata kunci "var" kerja?


75
2017-11-29 19:54


asal


Jawaban:


Ini berarti bahwa tipe lokal yang dideklarasikan akan disimpulkan oleh kompilator:

// This statement:
var foo = "bar";
// Is equivalent to this statement:
string foo = "bar";

Terutama, var tidak mendefinisikan suatu variabel menjadi tipe dinamis. Jadi ini TIDAK legal:

var foo = "bar";
foo = 1; // Compiler error, the foo variable holds strings, not ints

var hanya memiliki dua kegunaan:

  1. Ini membutuhkan lebih sedikit mengetik untuk mendeklarasikan variabel, terutama ketika mendeklarasikan variabel sebagai tipe generik bertingkat.
  2. Itu harus digunakan ketika menyimpan referensi ke objek dari jenis anonim, karena nama jenis tidak dapat diketahui sebelumnya: var foo = new { Bar = "bar" };

Anda tidak dapat menggunakan var sebagai jenis apa pun kecuali penduduk setempat. Jadi Anda tidak bisa menggunakan kata kunci var untuk menyatakan jenis bidang / properti / parameter / pengembalian.


138
2017-11-29 19:56



Ini berarti tipe data diturunkan (tersirat) dari konteksnya.

Dari http://msdn.microsoft.com/en-us/library/bb383973.aspx

Mulai dalam Visual C # 3.0, variabel   yang dinyatakan pada ruang lingkup metode bisa   memiliki tipe var implisit. Sebuah   variabel lokal yang secara implisit diketik adalah   sangat diketik seolah-olah Anda punya   menyatakan tipe sendiri, tetapi   compiler menentukan jenisnya. Itu   mengikuti dua deklarasi saya   secara fungsional setara:

var i = 10; // implicitly typed
int i = 10; //explicitly typed

var berguna untuk menghilangkan ketikan keyboard dan gangguan visual, misalnya,

MyReallyReallyLongClassName x = new MyReallyReallyLongClassName();

menjadi

var x = new MyReallyReallyLongClassName();

tetapi dapat digunakan secara berlebihan ke titik di mana keterbacaan dikorbankan.


12
2017-11-29 19:55



"var" berarti compiler akan menentukan jenis eksplisit dari variabel, berdasarkan penggunaan. Sebagai contoh,

var myVar = new Connection();

akan memberi Anda variabel tipe Koneksi.


7
2017-11-29 19:56



Apakah Anda pernah benci menulis penginisialisasi variabel seperti itu?

XmlSerializer xmlSerializer = new XmlSerialzer(typeof(int))

Jadi, dimulai dengan C # 3.0, Anda dapat menggantinya dengan

var xmlSerializer = new XmlSerialzer(typeof(int))

Satu pemberitahuan: Jenis diselesaikan selama kompilasi, jadi tidak ada masalah dengan kinerja. Tetapi Compiler harus dapat mendeteksi jenis selama langkah build, jadi seperti kode var xmlSerializer; tidak dapat dikompilasi sama sekali.


4
2017-11-29 20:05



Ini menyatakan tipe berdasarkan apa yang ditugaskan untuk itu dalam inisialisasi.

Contoh sederhana adalah kode:

var i = 53;

Akan memeriksa jenis 53, dan pada dasarnya menulis ulang ini sebagai:

int i = 53;

Perhatikan bahwa sementara kita dapat memiliki:

long i = 53;

Ini tidak akan terjadi dengan var. Padahal bisa dengan:

var i = 53l; // i is now a long

Demikian pula:

var i = null; // not allowed as type can't be inferred.
var j = (string) null; // allowed as the expression (string) null has both type and value.

Ini bisa menjadi kenyamanan kecil dengan tipe yang rumit. Ini lebih penting dengan tipe anonim:

var i = from x in SomeSource where x.Name.Length > 3 select new {x.ID, x.Name};
foreach(var j in i)
  Console.WriteLine(j.ID.ToString() + ":" + j.Name);

Di sini tidak ada cara lain untuk mendefinisikan i dan j daripada menggunakan var karena tidak ada nama untuk tipe yang mereka pegang.


4
2017-11-29 20:05