28

ユーザーが実際に値を指定したかどうか(MinValueの指定が無効であった)を確認するために、メソッドのオプションの日付パラメーター(デフォルトはMinValue)が必要でしたが、明らかにコンパイルではないため、許可されていません-時定数。

MSDNのページによると、「この定数の値は、0001年1月1日の00:00:00.0000000に相当します。」

では、なぜそれがコンパイル時定数ではないのでしょうか?また、許可されているInt32.MinValueを渡すのとはなぜ違うのですか?

4

2 に答える 2

23

DateTime定数(または構造体)を定義することはできません。MSDNからconstに許可されているタイプは次のとおりです。

タイプの1つ:byte、char、short、int、long、float、double、decimal、bool、string、enumタイプ、または参照タイプ。

于 2011-07-28T09:38:00.583 に答える
18

回避策:パラメータとしてnullableを使用します。IMOこれは、通常の値だけでなく、特別な値が明らかに異なるため、とにかくクリーンです。

void A(DateTime? p=null)
{
}

別の選択肢は次のとおりです。

void A(DateTime p=default(DateTime))
{
}

これは、デフォルトパラメータがdefault(T)ユーザー定義型の有効なデフォルトパラメータ値として使用できることを示しています。

または、異なる数のパラメーターに対してメソッドをオーバーロードするだけです。

于 2011-07-28T09:46:19.497 に答える