[解決済み】nullableオブジェクトは値を持つ必要がある
質問
例外の記述に矛盾がある。 Nullableオブジェクトは値を持たなければならない(?!)
これが問題なのです。
私の場合は
DateTimeExtended
クラスがあります。
を持っていること。
{
DateTime? MyDataTime;
int? otherdata;
}
とコンストラクタ
DateTimeExtended(DateTimeExtended myNewDT)
{
this.MyDateTime = myNewDT.MyDateTime.Value;
this.otherdata = myNewDT.otherdata;
}
このコードを実行する
DateTimeExtended res = new DateTimeExtended(oldDTE);
を投げる。
InvalidOperationException
をメッセージと一緒に送信します。
Nullableオブジェクトは値を持つ必要があります。
myNewDT.MyDateTime.Value
- は有効で、通常の
DateTime
オブジェクトを作成します。
このメッセージの意味と、私のやり方が間違っているのでしょうか?
なお
oldDTE
は
null
. を削除しました。
Value
から
myNewDT.MyDateTime
が、生成されたセッターのために同じ例外がスローされます。
解決方法は?
行を変更する必要があります。
this.MyDateTime = myNewDT.MyDateTime.Value;
から
this.MyDateTime = myNewDT.MyDateTime;
あなたが受け取っていた例外は
.Value
プロパティの
Nullable
DateTime
を返す必要があるため
DateTime
(の契約はそうなっているので)。
.Value
がないため、このようなことはできません。
DateTime
を返すので、例外が発生します。
一般に、やみくもに
.Value
という事前知識がない限り、NULL可能な型にその変数
マスト
には値が含まれます。
.HasValue
のチェック)。
EDIT
以下は
DateTimeExtended
例外を発生させない
class DateTimeExtended
{
public DateTime? MyDateTime;
public int? otherdata;
public DateTimeExtended() { }
public DateTimeExtended(DateTimeExtended other)
{
this.MyDateTime = other.MyDateTime;
this.otherdata = other.otherdata;
}
}
こんな感じでテストしてみました。
DateTimeExtended dt1 = new DateTimeExtended();
DateTimeExtended dt2 = new DateTimeExtended(dt1);
を追加します。
.Value
で
other.MyDateTime
は例外を引き起こします。これを削除すると例外が解消されます。見る場所を間違えているようです。
関連
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み] 保護レベルによりアクセス不能になりました。
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み] 2つのリストを結合する
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] Nullable<T>.HasValueとNullable<T> != nullの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】Unity3DでOnTriggerEnterが動作しない件
-
[解決済み】クロススレッド操作が有効でない。作成されたスレッド以外のスレッドからアクセスされたコントロール
-
[解決済み】WPFでXamlファイルにコメントを追加する方法は?
-
[解決済み】Swashbuckle/Swagger + ASP.Net Core: "Failed to load API definition" (API定義の読み込みに失敗しました
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】プロセスが実行されているかどうかを知るには?
-
VSでscanfエラーを恒久的に解決するには、ソースファイルを作成し、自動的に#define _CRT_SECURE_NO_WARNINGS 1を追加してください。