私が見ることができる唯一の利点:
var s = new ClassA();
以上
ClassA s = new ClassA();
後で ClassB が必要だと判断した場合は、宣言の RHS を変更するだけで済みます。
コレクションを列挙している場合は、単に「var」にして、後でタイプを把握することもできると思います。
それですか??私の弱い心には見えない、他に何か大きな利益があるのだろうか?
私が見ることができる唯一の利点:
var s = new ClassA();
以上
ClassA s = new ClassA();
後で ClassB が必要だと判断した場合は、宣言の RHS を変更するだけで済みます。
コレクションを列挙している場合は、単に「var」にして、後でタイプを把握することもできると思います。
それですか??私の弱い心には見えない、他に何か大きな利益があるのだろうか?
それは主にシンタックスシュガーです。それは本当にあなたの好みです。匿名型を使用する場合を除き、var を使用する必要があります。私は可能な限り暗黙の型付けを好みますが、それは LINQ で非常に優れています。
タイプを 2 回入力するのは冗長だと思います。
List<string> Foo = new List<string>();
タイプが何であるかが明らかな場合、簡単に var と入力できる場合。
var Foo = new List<string>();
var
使用する名前がない匿名型に役立ちます。
var point = new {X = 10, Y = 10};
これにより、プロパティ X と Y を持つ匿名型が作成されます。ただし、これは主に LINQ をサポートするために使用されます。あなたが持っていると仮定します:
class Person
{
public String Name {get; set;}
public Int32 Age {get; set;}
public String Address {get; set;}
// Many other fields
}
List<Person> people; // Some list of people
ここで、18 歳未満の人の名前と 18 歳までの年齢のみを選択するとします。
var minors = from person in people where person.Age < 18 select new {Name = person.Name, YearsLeft = 18 - person.Age};
いくつかの匿名型のminors
が含まれるようになりました。List
これらの人々を次のように繰り返すことができます。
foreach (var minor in minors)
{
Console.WriteLine("{0} is {1} years away from age 18!", minor.Name, minor.YearsLeft);
}
そうでなければ、これは不可能です。Person オブジェクト全体を選択してから、ループ内で YearsLeft を計算する必要がありますが、これは望ましくありません。
私が最初にここにサインオンしたとき、非常に物議を醸すスレッドであることが判明したスレッドを開始しました (var の一般的な使用法を説明するために「悪」を選択したことは明らかにひどい選択でした)。そのスレッドを開始する前に、それがどのように役立つかをよりよく理解するだけでなく、
var を使用する正当な理由:
この質問を見てください。多分彼らはあなたが決めるのを助けるでしょう.
C# での var キーワードの使用
https://stackoverflow.com/questions/633474/c-do-you-use-var
不必要に繰り返さないようにしてくれます。このことを考慮:
Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
非常に長い型名が同じ行で 2 回繰り返されていますが、まったくメリットがありません。さらに、これをリファクタリングする必要がある場合は、型を 2 回更新する必要があります。これは表現力豊かですが、
var dict = new Dictionary<string, List<int>>();
ここでの型についてはまだ疑いの余地はありませんdict
が、コードはより短く、読みやすくもなっていると思います。
実は、C# の「var」は匿名型を扱うために使用されます。
お気に入り:
var t = new {number = 10, name = "test"};
var キーワードは主に匿名型をサポートするために導入されましたが、それをより広く使用するために私が見た主な引数は、コードの簡潔さ/より読みやすいコード、およびコード行への適合のためです。
Dictionary<string, double> data = new Dictionary<string, double>();
versus
var data = new Dictionary<string, double>();
ほとんどの人にとっては正当な理由ではありませんが、盲目のプログラマーとして var キーワードも好きです。コードが読み上げられるのを聞いているので、ここでは変数名が 1 シラブルの後にあるだけです :-)
暗黙的な型指定の最も重要な理由は、LINQ クエリによって生成されるような匿名型をサポートすることでした。また、複雑な型のジェネリックを扱う場合にも大きな利点になる可能性がありますDictionary<int,List<string>>
.... それはそれほど複雑ではありませんが、列挙すると想像してみてください...
foreach KeyValuePair<int,List<string>> pair in myDictionary
{
}
暗黙の型付けで単純化されます。