1

わかりましたimplicitly-typed local variables must be initialized

私はそれresultが になることを知っているIListので、どうにかして varresultが になると言えIListますか?

var result; //initialize to something 

if( x < 0)  
{  
    result = (from s in context.someEntity  
              where s.somecolumn = x  
              select new { c1 = s.c1,c2=s.c2}).ToList();  
}

if(x >= 0)  
{  
    result = (from s in context.someEntity  
              where s.someOtherColumn = x  
              select new { c1 = s.c1,c2=s.c2}).ToList();  
}

foreach(var y in result)  
{  
    //do something . UPDATE 1: Retrieve y.c1, y.c2

}  
4

5 に答える 5

3

いいえ、「var は、ローカル変数が宣言され、同じステートメントで初期化される場合にのみ使用できます。変数は、null、メソッド グループ、または無名関数に初期化することはできません。」

インターフェイスを初期化していないため、機能しません。

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

于 2011-04-20T11:42:21.950 に答える
1

にしたいことがわかっている場合はIList、単に宣言しないのはなぜIListですか?

var初期化されていない変数の使用は(IMO)かなり読みにくいです。

于 2011-04-20T11:41:37.427 に答える
1

これを行う:

var result = default(IList);
于 2011-04-20T11:42:56.603 に答える
0

三項演算で何かできるかもしれません:

var list = (x < 0) ? ... : ...

しかし、実際には、それを読むのはかなり苦痛です。投稿されたコードで、私はただ固執すると思います

IList result;

読みやすさのために。

于 2011-04-20T11:47:20.413 に答える
0

コードで System.Collections.Generic を使用している場合、利用可能な唯一のオプションは

変数リスト = (x < 0) ? ... : ...

上記のシナリオで IList を使用しようとすると、型 'System.Collections.Generic.IEnumerable' を 'System.Collections.IList' に暗黙的に変換できませんというエラーが表示されます。明示的な変換が存在します (キャストがありませんか?)

ただし、 System.Collections を使用している場合は、使用できます

IList の結果。

于 2013-11-14T14:56:19.307 に答える