-2

簡単な質問:

C# でこの種の操作の構文はありますか。

  • 条件の場合、オブジェクト自体を返します: デフォルト値

以下の例のように、myObject を 2 回評価したくありません (これは、データベース クエリのようにより複雑なものになる可能性があります)。

int myVar = (myObject == DBNull.Value ? 0 : (int)myObject);

null をチェックするときにこの構文があることは知っていますが (以下の例のように)、この場合の DBNull.Value のように、別の値をチェックするためのものはありますか?

int myVar = Convert.ToInt32(myObject ?? 0);
4

2 に答える 2

1

オブジェクトを 2 回評価する必要はありません。オブジェクトを評価して変数に格納し、結果の変数をチェックします。

あなたの質問に対する答えはノーです。気まぐれに C# で独自のミニ言語を作成することはできません。最も一般的な操作にはショートカットがありますが、カスタム三項単項演算子は 1 つではありません。

于 2012-12-04T09:04:40.870 に答える
1

いいえ:

int myVar = myObject == DBNull.Value ? 0 : (int)myObject;

あなたができる最善です。2 回言及されたからといって、オブジェクトを 2 回評価することはありません。

またはもちろん関数でラップします:

int myVar = DBObjectToInt(myObject);

public static int DBObjectToInt(object dbObj)
{
  return dbObj == DBNull.Value ? 0 : (int)dbObj;
}

別のオプションはCoalesceSQL で使用しているため、そもそも DBNull を取得することさえありません。

于 2012-12-04T09:09:16.697 に答える