6

私が見ることができる唯一の利点:

var s = new ClassA();

以上

ClassA s = new ClassA();

後で ClassB が必要だと判断した場合は、宣言の RHS を変更するだけで済みます。

コレクションを列挙している場合は、単に「var」にして、後でタイプを把握することもできると思います。

それですか??私の弱い心には見えない、他に何か大きな利益があるのだろうか?

4

8 に答える 8

8

それは主にシンタックスシュガーです。それは本当にあなたの好みです。匿名型を使用する場合を除き、var を使用する必要があります。私は可能な限り暗黙の型付けを好みますが、それは LINQ で非常に優れています。

タイプを 2 回入力するのは冗長だと思います。

List<string> Foo = new List<string>();

タイプが何であるかが明らかな場合、簡単に var と入力できる場合。

var Foo = new List<string>();
于 2009-07-27T23:12:39.117 に答える
5

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 を計算する必要がありますが、これは望ましくありません。

于 2009-07-27T23:18:30.803 に答える
4

私が最初にここにサインオンしたとき、非常に物議を醸すスレッドであることが判明したスレッドを開始しました (var の一般的な使用法を説明するために「悪」を選択したことは明らかにひどい選択でした)。そのスレッドを開始する前に、それがどのように役立つかをよりよく理解するだけでなく、

C#の「var」の悪さ?

var を使用する正当な理由:

  • 簡潔
  • 繰り返しの削減 (DRY)
  • リファクタリング作業の削減
  • 匿名型をサポート (C# に追加された主な理由)
于 2009-07-27T23:12:50.973 に答える
3

この質問を見てください。多分彼らはあなたが決めるのを助けるでしょう.

C# での var キーワードの使用
https://stackoverflow.com/questions/633474/c-do-you-use-var

于 2009-07-27T23:14:27.630 に答える
2

不必要に繰り返さないようにしてくれます。このことを考慮:

Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();

非常に長い型名が同じ行で 2 回繰り返されていますが、まったくメリットがありません。さらに、これをリファクタリングする必要がある場合は、型を 2 回更新する必要があります。これは表現力豊かですが、

var dict = new Dictionary<string, List<int>>();

ここでの型についてはまだ疑いの余地はありませんdictが、コードはより短く、読みやすくもなっていると思います。

于 2009-07-27T23:17:34.347 に答える
1

実は、C# の「var」は匿名型を扱うために使用されます。

お気に入り:

var t = new {number = 10, name = "test"};
于 2013-06-20T14:27:33.080 に答える
0

var キーワードは主に匿名型をサポートするために導入されましたが、それをより広く使用するために私が見た主な引数は、コードの簡潔さ/より読みやすいコード、およびコード行への適合のためです。

Dictionary<string, double> data = new Dictionary<string, double>();
versus
var data = new Dictionary<string, double>();

ほとんどの人にとっては正当な理由ではありませんが、盲目のプログラマーとして var キーワードも好きです。コードが読み上げられるのを聞いているので、ここでは変数名が 1 シラブルの後にあるだけです :-)

于 2009-07-27T23:28:02.890 に答える
0

暗黙的な型指定の最も重要な理由は、LINQ クエリによって生成されるような匿名型をサポートすることでした。また、複雑な型のジェネリックを扱う場合にも大きな利点になる可能性がありますDictionary<int,List<string>>.... それはそれほど複雑ではありませんが、列挙すると想像してみてください...

foreach KeyValuePair<int,List<string>> pair in myDictionary
{

}

暗黙の型付けで単純化されます。

于 2009-07-27T23:17:23.677 に答える