0

三項演算子にこれと同じことをさせる方法はありますか?:

if (SomeBool)
  SomeStringProperty = SomeValue;

私はこれを行うことができます:

SomeStringProperty = someBool ? SomeValue : SomeStringProperty;

しかし、SomeBool が false (右) の場合でも、SomeStringProperty の getter と settor を起動するのでしょうか? したがって、上記のステートメントと同じではありません。

三項演算子を使用しないことが解決策であることはわかっていますが、式の最後の部分を無視する方法があるかどうか疑問に思いました。

4

3 に答える 3

5

それは意味がありません。

三項演算子は式です。式がステートメントとして使用されない限り(三項演算子は使用できません) 、式には常に値が
必要です。

あなたは書くことができませんSomeProperty = nothing

于 2011-12-05T17:13:44.027 に答える
2

これは、u が三項式の結果を格納する必要があることを除いて、IF ステートメントと同じことを達成するのと同じくらい近いです。本当に使わなくても…

完全な例:

namespace Blah
{
public class TernaryTest
{
public static void Main(string[] args)
{
bool someBool = true;
string someString = string.Empty;
string someValue = "hi";
object result = null;

// if someBool is true, assign someValue to someString,
// otherwise, effectively do nothing.
result = (someBool) ? someString = someValue : null;
} // end method Main
} // end class TernaryTest
} // end namespace Blah 
于 2011-12-05T17:25:49.893 に答える
1

C# の三項演算子を使用した短絡評価 (http://en.wikipedia.org/wiki/Short-circuit_evaluation) のようなものを探していると思います。

答えは NO であることがわかると思います。

反対票を投じた人とは対照的に、それは有効な質問だと思います。

于 2011-12-05T18:59:42.270 に答える