1

C#で三項演算子を使用して、渡された値がnullまたはdatetime値であることを確認したいですか?

私はこのようにしてみました

fromDate == null ? null : Convert.ToDateTime(fromDate)

取得エラー:

type of conditional expression cannot be determined

fromDate変数が null であるか、日時の値を持っているかを確認したいですか?

変数 fromDate はクエリ文字列と文字列の型から来ています。

4

7 に答える 7

4

から?: Operator:

first_expression と second_expression の型が同じであるか、一方の型から他方の型への暗黙的な変換が存在する必要があります。

condition ? first_expression : second_expression;

Convert.ToDateTimeが返され、 と の間に暗黙の変換DateTimeはありません。条件演算子は式であり、戻り値の型が必要です。nullDateTime

1 つのオプションは、最初の式DateTime.TryParseとして(を返すboolean) を使用し、別のブール値 (または) を2 番目の式として使用すると、私には論理的に思えます。ダミスの答えは論理的に思えます。truefalse

または代わりに、次のように null 許容の DateTime を使用できますDateTime?

DateTime? foo;

if(foo.HasValue)
{
   //Nullable DateTime has a value..
}
于 2013-09-16T06:41:47.047 に答える
1

fromDate以下のようにするための文字列値がある場合

DateTime dt;

bool isValidDate =  String.IsNullOrEmpty(fromDate) ? false : DateTime.TryParse(fromDate, out dt); 

DateTime.TryParseExact入力がメソッドをより適切に使用する日時形式/形式を知っている場合

fromDate が DateTime の場合、以下のように簡単に確認できます

fromDate.HasValue

あなたは必要ありません?: Operator

于 2013-09-16T06:48:52.947 に答える
0

問題は、Convert.ToDateTime(fromDate) の型が DateTime で、null 値を受け入れることができないことです。そのため、このコードはこの形式では機能しません。2 つの選択肢があります。次の場合は通常に変更します。

if(fromDate != null)
{
        Convert.ToDateTime(fromDate)
}

または、DateTime を null 許容の DateTime にキャストします。

    fromDate == null ? null : (DateTime?)Convert.ToDateTime(fromDate)

C# の三項演算子では、両方の値が同じ型である必要があり、ここで説明されています。

于 2020-04-10T09:55:57.210 に答える
-1

お役に立てば幸いです

   string format = "ddd dd MMM h:mm tt yyyy";
    DateTime dateTime;

    fromDate=(DateTime.TryParseExact(fromDate, format, CultureInfo.InvariantCulture,
        DateTimeStyles.None, out dateTime))?dateTime:null;
于 2013-09-16T06:50:36.370 に答える
-1

主な問題は、に割り当てようとしていることnullにあるようですDateTime

DateTime は構造体であり、参照型ではないため、これは実行できません。

null 許容 DateTime ( DateTime?) または特定の値を使用して、null を示します。DateTime.MinValue

例については、こちらをご覧ください: http://www.dotnetperls.com/nullable-datetime

于 2013-09-16T07:06:25.980 に答える
-1
romDate == null ? null : Convert.ToDateTime(fromDate)

null一般的なタイプではありConvert.ToDateTime(fromDate)ません。コンパイラは、条件演算子の両方の式を同じ型にキャストできる必要があります。

于 2013-09-16T06:38:37.310 に答える