bool isValid = false;
string username = "someadmin";
If(!String.IsNullOrEmpty(username) && !(username.IndexOf("admin") != -1)
isValid = true;
ダブルネガティブの2番目の部分は私を横切っています!このメソッドは何を返しますか?真か偽ですか?
bool isValid = false;
string username = "someadmin";
If(!String.IsNullOrEmpty(username) && !(username.IndexOf("admin") != -1)
isValid = true;
ダブルネガティブの2番目の部分は私を横切っています!このメソッドは何を返しますか?真か偽ですか?
それはそれはfalseを返します...
を、それが最初に持っていたように、IsValidのは、同じ値が含まれます
!String.IsNullOrEmpty(username) // this is true, the string is not NullOrEmpty
!(username.IndexOf("admin") != -1) // IndexOf is >= 0, so != 1 is true. But the first ! makes it false
falseを返します。
isValid
はfalseになります。
(Nitpick:このコードは何も「戻る」しません:。それだけisValid
変数の値を設定します)
平易言語バージョン:(ユーザ名がnullまたは空ではない
場合とユーザー名に「admin」は含まれません) isValid = true;
最初の部分:ユーザー名がヌルか空文字列かどうかを確認します。 ifの2番目の部分:ユーザー名にadminサブワードが含まれているかどうかを確認します。おそらくAutorが両方の文字列を比較しようとしました。結果:ユーザー名が空でなく、ユーザー名がadminでない場合、isValidはtrueです。それ以外の場合は有効 - false。
false。しかし、私は質問をしない?これを実行できませんでしたか?どのようなダブルネガティブ?値はちょうど反転されており、括弧はステートメントが実行される順序を明確に示しています。
isValid
に格納された値はfalse
になります。
私はあなたDeMorgan's Lawsに提示する可能性がありますので、二重否定の除去...
if (!(String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1)) {
isValid = true;
}
:
NOT (P OR Q) = (NOT P) AND (NOT Q)
NOT (P AND Q) = (NOT P) OR (NOT Q)
だから、あなたはとしてそれを書き換えることができます。
さらに、あなたが言うことができる:
if (String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1) {
isValid = false;
}
...すべてのネガを除去します。
また、あなたが言うことができる:
isValid = !(String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1));
...それは素晴らしく、コンパクトにします。
DeMorganは素晴らしいです、ユーザ名に '' admin "'を含める必要はありませんか? –
ねえ、良い点。それは私がコピー貼り付けをしないために得るものです。 –
それが原因行方不明括弧;-)
にあなたの構文エラーを与えるだろう。しかし、真剣に、それはfalseを返します。
!String.IsNullOrEmpty(ユーザー名)//ユーザ名が空のNOT NULLとされていない場合=>真
username.IndexOf( "管理者")!= -1 // "管理者" は、ユーザー名に発見された場合(-1でない)=> true
!(username.IndexOf( "admin")!= -1)//ユーザー名=>偽で "admin"が見つからない場合
結論:ifステートメントの条件が満たされていないため、isValidはfalseのままです。
PS:私はC#のプログラマーではありませんが、IndexOf(文字列)が-1のときは見つからないことを前提としています。
...よく、返信文が見えないと考えて、質問に答えることはできないと思います - ] –
なぜ私たちにお尋ねしますか?あなたはそこにコードを持っています - それを実行し、参照してください! –
このコードはコンパイルされません。比類のない賛成です。 –