プロジェクトをVS2013からVS2015に移行した後、プロジェクトはビルドされなくなりました。次のLINQステートメントでコンパイルエラーが発生します。
static void Main(string[] args)
{
decimal a, b;
IEnumerable<dynamic> array = new string[] { "10", "20", "30" };
var result = (from v in array
where decimal.TryParse(v, out a) && decimal.TryParse("15", out b) && a <= b // Error here
orderby decimal.Parse(v)
select v).ToArray();
}
コンパイラはエラーを返します:
エラーCS0165未割り当てのローカル変数 'b'の使用
この問題の原因は何ですか?コンパイラの設定で修正できますか?
out
引数について悪いことすべてを例示しました。それはTryParse
null許容値(または同等のもの)を返しますか?
where (a = decimal.TryParse(v)).HasValue && (b = decimal.TryParse(v)).HasValue && a <= b
がずっと見栄えが良い
decimal a, b; var q = decimal.TryParse((dynamic)"10", out a) && decimal.TryParse("15", out b) && a <= b;
。私はこれを上げるロズリンのバグをオープンしました。
b
を介して割り当てた後にのみ使用しout
ます。