7

Google で必要なものが見つからないようです。ここですぐに回答が得られるはずです。

    String str;
    bool b = true;
    b ? str="true" : str="false";

    Console.Out.WriteLine(str);

それ ?: 構文は私には正しいようです。ただし、コンパイルエラーが発生します。

Program.cs(13,28):
エラー CS1002: ; Program.cs
(13,28):
エラー CS1525: 無効な式の用語 ':'
Program.cs(13,30):
エラー CS1002: ; 期待される

csharp 構文についてはわかりませんが、cpp に組み込まれています。助けてください!ありがとう!

更新: 約 10 人が正解です (笑) ので、最初に提出した人に賞を与えます。

興味深い構文であり、実際には c++ 構文よりも好きだと思います。

私がこれを行っていた実際のコードは次のとおりです。

ftp.ConnectMode = job.FTPUsePassiveMode ? FTPConnectMode.PASV : FTPConnectMode.ACTIVE;
4

7 に答える 7

15
str = b ? "true" : "false";

しかし、あなたはこれを行うことができます:

str = b.ToString();

または、仲介者を完全にカットすることもできます:

Console.WriteLine(b);
于 2010-03-02T19:10:35.630 に答える
15

コードは次のようになります。

str = b ? "true" : "false";

ただし、これは単に を呼び出すことに似ていb.ToString().ToLower()ます。そうは言っても、実際のユースケースは、ブール値を文字列に変換するだけではなく、もう少し複雑だと思います。

更新
コメントに示されているように、条件演算子は値を返します。if/のような制御フロー用ではありませんelse

于 2010-03-02T19:10:25.910 に答える
4

三項演算子はステートメントの切り替えを許可せず、値の切り替えのみを許可します。あなたはこれをしたい:

str= b ? "true" : "false"

(明らかにb.ToString())はこの特定の問題に対するより良い解決策ですが、これは単なる例であると想定しています)。

于 2010-03-02T19:11:57.423 に答える
2

他の誰もが言ったことと: http://msdn.microsoft.com/en-us/library/ty67wk28.aspx

于 2010-03-02T19:12:41.120 に答える
1
str = (b) ? "true" : "false";
于 2010-03-02T19:10:56.567 に答える
0

三項演算子は、C# のステートメントの最上位になることはできません。C# では最上位の式に副作用があることが必要だからです。

于 2010-03-02T19:12:47.467 に答える
-1

好奇心から、これをやってみませんか:

bool b = true;
string str = b.ToString();

.NET では、.ToString() が呼び出されると、値の型は自動的にその値を文字列に変換します...ブール値を含みます。

于 2010-03-02T19:12:58.593 に答える