答えて
それは、宣言されている地元のタイプは、コンパイラによって推測されることを意味します:
// This statement:
var foo = "bar";
// Is equivalent to this statement:
string foo = "bar";
注目すべきは、var
はダイナミック型である変数を定義していません。だから、これは合法ではない:
var foo = "bar";
foo = 1; // Compiler error, the foo variable holds strings, not ints
var
は2つの用途があります。
- これは、入れ子になったジェネリック型として変数を宣言する場合は特に、変数を宣言するために少ないタイピングが必要です。
- 匿名型のオブジェクトへの参照を格納するときに型名を事前に知ることができないので、使用する必要があります:
var foo = new { Bar = "bar" };
あなたは地元の人々が、何の型としてvar
使用することはできません。したがって、キーワードvar
を使用してフィールド/プロパティ/パラメータ/戻り値の型を宣言することはできません。
これは、データ型がコンテキストから派生(暗示)されていることを意味します。
http://msdn.microsoft.com/en-us/library/bb383973.aspx C#3.0のVisualに始まり
から、メソッドのスコープで宣言された変数 は は、暗黙の型VARを持つことができます。 暗黙的に型指定されたローカル変数は と同じように厳密に型指定されていますが、 型は自分で宣言していますが、 コンパイラによって型が決定されます。私の 次の2つの宣言は、機能的に同等 ある:
var i = 10; // implicitly typed
int i = 10; //explicitly typed
var
は、キーボードタイピングおよび視覚ノイズ、例えばを除去するために有用である
MyReallyReallyLongClassName x = new MyReallyReallyLongClassName();
は
var x = new MyReallyReallyLongClassName();
なるが可読性を犠牲にしているところまで使いすぎる可能性があります。
"var"は、コンパイラが使用法に基づいて変数の明示的な型を決定することを意味します。たとえば、
var myVar = new Connection();
のように、Connectionタイプの変数を指定します。
このような変数イニシャライザを書くのは嫌でしたか?
XmlSerializer xmlSerializer = new XmlSerialzer(typeof(int))
だから、C#3.0で始まる、あなたは
var xmlSerializer = new XmlSerialzer(typeof(int))
つの通知でそれを置き換えることができます。タイプは、コンパイル時に解決されないので、パフォーマンスに問題れます。しかし、コンパイラーはビルドステップ中にタイプを検出できるはずですので、var xmlSerializer;
のようなコードはまったくコンパイルされません。
初期化で割り当てられた内容に基づいてタイプを宣言します。
var i = 53;
53の種類を調べ、基本的にこれをリライトします::私たちが持つことができる一方であること
int i = 53;
注:
long i = 53;
を
簡単な例では、コードがということです
これはvarでは発生しません。で、それは可能ですが:同様
var i = 53l; // i is now a long
:
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.
これは、複雑なタイプとマイナー利便することができます。これは、匿名型でより重要である:
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);
はここで、彼らが保持するタイプには名前がないようvar
を使用するよりもi
とj
を定義する他の方法はありません。
- 1. varとは何ですか?
- 2. bashスクリプトで$ {VAR:-...}と$ {VAR:?...}の違いは何ですか?
- 3. `var in array`と` array.indexOf(var) `の違いは何ですか?
- 4. 非配列varと配列varの違いは何ですか?
- 5. def func(var)とdef func =(var)の違いは何ですか?
- 6. javascript varまたはvarではない点は何ですか?
- 7. C++では `var << ifstream`は` ifstream >> var`と同じですか?
- 8. C# - 最後のwhileループと 'var x'は何をしますか?
- 9. Scalaのメソッドローカルではないvarとは何ですか?
- 10. 関数内で "return(var> -1)"とは何ですか?
- 11. c#キーワードvarは遅いコンパイルですか?
- 12. jqueryステートメント "var collection = jQuery([1]);"とは何ですか?平均?
- 13. javascriptのvar関数と関数の違いは何ですか?
- 14. Scalaのvarとvalの定義の違いは何ですか?
- 15. ObjectQueryと "var"の違いは何ですか?
- 16. Typescriptのvarとletの違いは何ですか?
- 17. 「var app = app || {};」とは何ですか?行う?
- 18. pythonのnumpy var()とstatistics variance()の違いは何ですか?
- 19. `printf`の%* c%* cとは何ですか?
- 20. C#ではString *とは何ですか?
- 21. var {u、v、w} = xとは何ですか; Javascriptの意味ですか?
- 22. 「オブジェクトobjVar =(オブジェクト)var;」とは何ですか? Javaの意味ですか?
- 23. このCコード行は何をしますか? (const VAR = "string";)
- 24. Actionscriptでは$(var)の意味は何ですか?
- 25. C++で_In_とは何ですか?
- 26. C#プログラムでThePreStubとは何ですか?
- 27. C++でvoidポインタとは何ですか?
- 28. C =で '=>'とは何ですか?
- 29. C#でCreateNewAttributeとは何ですか?
- 30. CプログラミングでLINT_ARGSとは何ですか?
これは、Stack Exchangeのような回答が必要な場合の良い例です。時には、人々は重要な情報を省略したり、短く、その要点に失敗したりすることがあります。 – Panzercrisis
@cdhowie 'var foo = new Foo()'、 'foo'の型が' Foo'かスーパークラスの場合はどうでしょうか?それはどのように法的になりますか? –
@Djackそれは合法ではない、そしてそうではない。 'var foo = new Foo();'は 'Foo foo = new Foo();'と同じことです。つまり、 'foo'は' Foo'参照を含むことができ、オブジェクトへの参照は 'Foo' **サブ**タイプ、*そうでない*フー**スーパー**タイプ。 – cdhowie