特典にはどんなものがありますかの暗黙的な入力クライアントまで、フルのC#3.0>+
-
19-09-2019 - |
質問
いずみさの、見えない:
var s = new ClassA();
以上
ClassA s = new ClassA();
は、その決定をした場合は、たいClassB、みを変更しRHSの宣言です。
私の場合は列挙を通じての収集もできるだけで'var'としてのタイプです。
はるかあの巨大な自分の弱心ません。
解決
これは、主にシンタックスシュガーです。それは本当にあなたの好みです。その後、VARを使用して、匿名型を使用するときにいない限り必要です。私も可能な限り暗黙の型を好む、それは本当にLINQで輝いています。
私はそれが冗長二回タイプを入力して見つけます。
List<string> Foo = new List<string>();
それは明らかだとき、私は簡単にちょうどタイプが何であるかVARを入力することができたときます。
var Foo = new List<string>();
他のヒント
var
は、あなたが使用するために名前を持っていない匿名型、便利です。
var point = new {X = 10, Y = 10};
これは、主にかかわらず、LINQをサポートするために使われているプロパティのXとYとの匿名型を作成します。あなたが持っていると仮定します:
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を、計算する必要があります。
開始していますの購入は対象外)国内に大きく話題のスレッドが最初に署名したら私の選択"evilnessファンクションを記述する一般の利用var明らかにした恐ろしいです。) 言うまでもなく、より感謝varよかった前を開始したスレッドなどをよく理解できusefully使用
いくつかの良い理由に使用var:
- 簡潔
- 削減の繰り返し(DRY)
- 削減のリファクタリングの努力
- ポ匿名の種類(主な理由で追加C#)
この質問を見てください。たぶん、彼らはあなたが決めるお手伝いします。
C#でvarキーワードを使用する
https://stackoverflow.com/questions/633474/c-do-you-use-var >
これは私が自分自身を不要に繰り返さないようにすることができます。このことを考えてみます:
Dictionary<string, List<int>> dict = new Dictionary<string, List<int>>();
私たちは、全く利益で二回同じ行に二回繰り返し、非常に長い型名を持っています。あなたはこれをリファクタリングする必要がある場合はさらに、あなたは二度タイプを更新する必要があります。これは同じように表情豊かであるのに対します:
var dict = new Dictionary<string, List<int>>();
があり、ここでdict
の種類についての疑いはまだですが、コードが短くなり、そして私は同様に読みやすくていると主張するでしょう。
実際にはC#で "varが" 匿名型に対処するために使用されます。
と同様ます:
var t = new {number = 10, name = "test"};
暗黙の型のための包括的な理由は、LINQクエリによって生成されるもののように、匿名型をサポートすることでした。複雑な型指定されたジェネリック医薬品を扱うとき... Dictionary<int,List<string>>
のようなものを彼らはまた、大きな利益することができます。それはあまりにも複雑ではないが、列挙想像...
foreach KeyValuePair<int,List<string>> pair in myDictionary
{
}
暗黙の型と簡略化される。
、私はより広く、それを使用するために見てきた主な引数は、簡潔さ/コードが読みやすくするためにある、プラスコードのあなたのラインでよりフィットます:
Dictionary<string, double> data = new Dictionary<string, double>();
versus
var data = new Dictionary<string, double>();
ほとんどの人のためのない十分な理由けれども、私も盲目のプログラマーとしてvarキーワードのように、私はちょうど1 syllabul後に読み出さので、ここで変数名されているコードに耳を傾けるよう: - )