C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: C# 型名に"?"を付加した宣言について


(過去ログ 164 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■94893 / inTopicNo.1)  C# 型名に"?"を付加した宣言について
  
□投稿者/ az (1回)-(2020/06/01(Mon) 13:55:01)

分類:[C#] 

Visual Studio 2017 (.NET Framework4.6)を使って開発をしています。
前任者のソースコードを引きついで開発しているのですが、
その中に以下の記述がありました。


DateTime? XXX = null;


これはどのような使い方を使用とした際に用いるのでしょうか?


前任者に連絡を取ることは不可能である一方、
Webサイトで「C# 型名 ?」というキーワードで調べてみてもわからなかったので質問させていただきました。
引用返信 編集キー/
■94894 / inTopicNo.2)  Re[1]: C# 型名に"?"を付加した宣言について
□投稿者/ WebSurfer (2065回)-(2020/06/01(Mon) 14:32:38)
No94893 (az さん) に返信

> DateTime? XXX = null;

DateTime のような値型には null を代入できませんが、DateTime? とすると null を代入
できます。

Nullable<T> などでググってみてください。

引用返信 編集キー/
■94897 / inTopicNo.3)  Re[2]: C# 型名に"?"を付加した宣言について
□投稿者/ az (3回)-(2020/06/02(Tue) 08:24:10)
ご教示ありがとうございます。
ソースコードには、XXXがnullかどうかを判定する処理があったため、
あらかじめnullで初期化しておきたかったのだと理解できました。


No94894 (WebSurfer さん) に返信
> ■No94893 (az さん) に返信
>
>>DateTime? XXX = null;
>
> DateTime のような値型には null を代入できませんが、DateTime? とすると null を代入
> できます。
>
> Nullable<T> などでググってみてください。
>
引用返信 編集キー/
■94898 / inTopicNo.4)  Re[3]: C# 型名に"?"を付加した宣言について
□投稿者/ WebSurfer (2066回)-(2020/06/02(Tue) 09:25:06)
No94897 (az さん) に返信

> ソースコードには、XXXがnullかどうかを判定する処理があったため、
> あらかじめnullで初期化しておきたかったのだと理解できました。

想像ですが「あらかじめnullで初期化しておきたかった」というのは違うのでは
なかろうかと思います。

例えば、メソッドの引数に int 型とか DateTime 型などの値型があるが、null が
渡される場合があるので、int? とか DateTime? にしておかないと例外はスローさ
れて困ったことになるので、とりあえず null は受けてメソッド内で null 判定を
して対処するとかだと思うのですが。

また、DB からデータを取得する際、DB のフィールドが NULL 可になっている
場合(DB の NULL と C# の null は本質的に違うものですので注意)、BD が
NULL だったら C# には null を代入するとかもあると思います。
引用返信 編集キー/
■94899 / inTopicNo.5)  Re[4]: C# 型名に"?"を付加した宣言について
□投稿者/ yodel (1回)-(2020/06/02(Tue) 12:33:17)
No94898 (WebSurfer さん) に返信
> ■No94897 (az さん) に返信
>
>>ソースコードには、XXXがnullかどうかを判定する処理があったため、
>>あらかじめnullで初期化しておきたかったのだと理解できました。
>
> 想像ですが「あらかじめnullで初期化しておきたかった」というのは違うのでは
> なかろうかと思います。

恐らく、DateTime?変数の初期値としてnullをセットしておいて、
何らかの条件でDateTime?変数に値をセットする、
最終的にDateTime?変数がnullだったら...というロジックを考えているのであれば、
それはそれで有効かも知れません。
(このような場合はフラグを使う方が良いかも知れませんが。)
引用返信 編集キー/
■94900 / inTopicNo.6)  Re[5]: C# 型名に"?"を付加した宣言について
□投稿者/ az (4回)-(2020/06/02(Tue) 14:52:45)
No94899 (yodel さん) に返信
> 恐らく、DateTime?変数の初期値としてnullをセットしておいて、
> 何らかの条件でDateTime?変数に値をセットする、
> 最終的にDateTime?変数がnullだったら...というロジックを考えているのであれば、
> それはそれで有効かも知れません。
> (このような場合はフラグを使う方が良いかも知れませんが。)

前任者のコードは、上記のような感じで、DateTime?変数をフラグのように使っていました。
(まぁ、本来ならフラグを使うのが望ましいのかもしれませんが)
補足いただき、ありがとうございます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -