がどのように私は変換文字列
string date = "12/2/2011";
DateTime? dt = date ?? DateTime.Parse(date);
を書くことができ、これはコンパイル時にエラーがスローされます。私はtryparse or do if {}
をすることができます知っています。これを1行で行う方法はありますか?
がどのように私は変換文字列
string date = "12/2/2011";
DateTime? dt = date ?? DateTime.Parse(date);
を書くことができ、これはコンパイル時にエラーがスローされます。私はtryparse or do if {}
をすることができます知っています。これを1行で行う方法はありますか?
ではなくnull-coalescing operator??
のconditional operator?:
を使用してみてください:
DateTime? dt = date == null ? (DateTime?)null : DateTime.Parse(date);
またそうしないと、コンパイルエラーになりますDateTime?
にヌルをキャストする必要があります。
string date = "12/2/2011";
date = Convert.ToDateTime(date);
string date = "12/2/2011";
DateTime? dt = String.IsNullOrEmpty(date) ? (DateTime?)null : DateTime.Parse(date);
文字列date
がnull
または空の文字列であるとき、また、それは無効な日付表現が含まれている場合、このソリューションは、NULL可能日時dt
にnull
が割り当てられていないだけで:
string date = null; // or "01/02/2011"
DateTime? dt;
DateTime temp;
if (DateTime.TryParse(date, out temp)) {
dt = temp;
} else {
dt = null;
}
if-else文は1行3進表現で置き換えることができますが、宣言はtemp
:
DateTime temp;
dt = DateTime.TryParse(date, out temp) ? temp : (DateTime?)null;
Downvoterはコメントしてください。私のソリューションで何が問題になっていますか?日付がnullの場合だけでなく、有効な日付文字列が含まれていない場合も検出されます。また、dtにはNULLを指定できることに注意してください。 –
dtは最初からヌルなので、あなたの 'else'ステートメントには理由がありません。 – everton
@EvertonAgner: 'dt'がメンバ変数である場合のみ、ローカル変数ではありません。質問で与えられた例から、 'dt 'がクラスで定義されているのか、メソッドで定義されているのかは分かりません。 –
あなたに余分な疑問符があります。これは 'DateTime? dt =日付? DateTime.Parse(date):null; ' – dasblinkenlight
申し訳ありません、今までの質問を編集しましたか? DateTime.Parse(date)from date? null:DateTime.Parse(date) –
いいえ、C#は?をサポートしていますか? (Groovyのelvis演算子と呼ばれます)。値がnullの場合にのみ右側の値を返し、それ以外の場合は値自体を返します。 – everton