可能性の重複:
Why does Enumerable.All return true for an empty sequence?この条件が真を返すのはなぜですか?
コード:それは可能であるどのように
var line = "name:";
Console.Write(line.Split(new char[] { ':' })[1].All(char.IsDigit));
?それは偽を返すべきではない? :
の後は空の文字列です。
可能性の重複:
Why does Enumerable.All return true for an empty sequence?この条件が真を返すのはなぜですか?
コード:それは可能であるどのように
var line = "name:";
Console.Write(line.Split(new char[] { ':' })[1].All(char.IsDigit));
?それは偽を返すべきではない? :
の後は空の文字列です。
真ソースシーケンスのすべての要素は、 指定された述語でテストに合格または配列は空の場合は場合。それ以外の場合はfalseです。
これは2つの理由は次のとおりです。
あなたファントム編集更新で述べたように、あなたのインデックス条件はSplit
によって返される配列内の二エントリをつかむ(C#がで始まるカウント0)
var parts = line.Split(new char[] { ':' });
// parts[0] == "name";
// parts[1] == "";
Enumerable.All<TSource>(...)
戻るtrue
入力シーケンスが空の場合
戻り値
型:可能System.Boolean ソースシーケンスのすべての要素が指定された述語でテストに合格した場合はtrue、または配列が空の場合。それ以外の場合はfalseです。
それはvacuously true表現です。
反例が見つからないため、すべての文字が数字です。このコード:
return s.All(char.IsDigit);
はこのループとほぼ同等です:この書き換えられたバージョンで
foreach (char c in s)
{
if (!char.IsDigit(c)) { return false; }
}
return true;
文字列の文字がない場合は、ループ本体を入力することはないだろうことは明らかであるべきで、結果は真です。
Upvote良いウィキペディアのリンクのために、決して名前を知っていた:) –