13

C#で「何もしない」というキーワードはありますか?

たとえば、アクションの1つがアクションを実行しないという三項演算子を使用したいとします。

officeDict.ContainsKey("0") ? DO NOTHING : officeDict.Add("0","")
4

10 に答える 10

42

いいえ、そのようなキーワードはありません。また、?:演算子はアクションを決定するためのものではありません。これは、値(またはより技術的には値の式)を決定するためのものです。

代わりに、この種の意思決定にif条件を使用したいと考えています。

if (!officeDict.ContainsKey("0"))
    officeDict.Add("0", "");
于 2012-10-18T14:32:56.410 に答える
18

他の人が指摘しているように、ifここではステートメントを使用する方がはるかに慣用的です。

しかし、あなたが尋ねたことに答えるために、ラムダとデリゲートを使用することができます:

// Bad code, do not use:
(officeDict.ContainsKey("0") ? (Action)(() => { }) : () => officeDict.Add("0", ""))();
于 2012-10-18T14:38:25.473 に答える
6

これは悪い考えですが、実際には、属性を使用して「DoNothing」メソッドを作成し、条件付きでメソッド呼び出しを発行できます(これは、「NEVER」条件を#defineしないという規則に依存していることに注意してください)。 ConditionalAttributeのため、メソッドの呼び出しは発行されず、基本的にコードの「nop」セクションがあります。

       [Conditional("NEVER")] 
       public void DoNothing() 
       { 
       } 

それでも、他のいくつかがすでに指摘しているように、これはお勧めできません。

于 2012-10-18T14:41:24.740 に答える
5

いずれかの場合にのみ何かを実行したいのに、なぜ三項演算子を使用したいのですか?条件を逆にしてifステートメントを使用してみませんか?

if (!officeDict.ContainsKey("0"))
{
    officeDict.Add("0","")
}
于 2012-10-18T14:33:17.753 に答える
3

三項演算子は用であり、ステートメント用ではありません。

あなたはif声明が欲しい。

于 2012-10-18T14:32:59.643 に答える
3

コードが次のようになるように、ifステートメントを使用しないのはなぜですか。

if(!officeDict.ContainsKey("0"))
    officeDict.Add("0","")
于 2012-10-18T14:34:02.247 に答える
2

簡単に書いてみませんifか?

if (!officeDict.ContainsKey("0"))
    officeDict.Add("0","")

はるかに読みやすくなります。

于 2012-10-18T14:33:12.433 に答える
2

これにIFステートメントを使用してみませんか?

if(!officeDict.ContainsKey("0")) officeDict.Add("0","");
于 2012-10-18T14:33:24.710 に答える
2

代わりにifステートメントを使用してください。

if (!officeDict.ContainsKey("0")) 
{
    officeDict.Add("0","")
}
于 2012-10-18T14:33:59.383 に答える
-3

これを試してみてください(grinns)

    if (officeDict.ContainsKey("0")) 
       Thread.Sleep(1) 
   else
       officeDict.Add("0","")
于 2012-10-18T14:35:15.747 に答える