4

私はC#は初めてですが、プログラミングは初めてです。以下のコードで 2 つの文字列の長さを比較すると、エラーが発生します。

演算子「&」は、タイプ「bool」および「int」のオペランドには適用できません

どうやらstring1.Length > 0、このコンテキストではブール値と見なされます。

この比較はどのように実行すればよいですか?

if (string1.Length > 0 & string2.Length = 0)
{
    //Do Something
}
4

5 に答える 5

10

エラーの理由は、=意図したときに書いたためです==。C# の場合

string1.Length > 0 & string2.Length = 0

意味

(string1.Length > 0) & (string2.Length = 0)

左側boolの型は で、右側の型は です。これは一緒に -edintできないため、エラーになります。&もちろん、それを乗り越えたLengthとしても、任務の対象にはなりません。

==等しいかどうかをテストするために使用します。=課題です。

&&の代わりに使用することも検討してください&。の意味は、x & y「両方を評価し、結果はtrue両方がそうである場合truefalseそうでない場合である」です。の意味は、x && y「左側を評価しfalse、結果がfalseそうである場合は右側を評価しない。左側がそうである場合はそのままtrue続行する&」です。

于 2013-06-05T00:38:59.957 に答える
8

整数に適用される場合、&C# の演算子は論理ANDではなくビット単位ANDです。また=、等値比較演算子ではなく代入です。string1.Length > 0式は確かにブール型の式ですが、代入は整数です (整数であるため) 0

必要なのは

if (string1.Length > 0 && string2.Length == 0)
于 2013-06-05T00:33:45.260 に答える
3

おそらくこれを行うつもりでした:

if (string1.Length > 0 && string2.Length == 0)
{
    //Do Something
}

C# では、=演算子は代入のみを目的としています。は==等値比較に使用されます。(最初の条件が false と評価された場合、2 番目の条件をスキップします)の&&代わりに演算子を使用することもできます。&&&

ただし、本当に「文字列の長さを比較」したい場合は、次のようにするだけです。

if (string1.Length > string2.Length)
{
    //Do Something
}
于 2013-06-05T00:33:21.753 に答える
0

等価テストに==が必要だと思いますか? C# 代入は(C のように)値を返します

于 2013-06-05T00:36:16.700 に答える
0

これで問題が解決します。

if(string1.Length > 0 && string2.Length == 0)
于 2013-06-05T00:34:19.690 に答える