C# と VB.NET の質問掲示板
ASP.NET、C++/CLI、Java 何でもどうぞ
C# と VB.NET の入門サイト
Re[5]: C# 型名に"?"を付加した宣言について
(過去ログ 164 を表示中)
掲示板トップ
C# と VB.NET 入門
新規作成
利用方法/規約
トピック表示
ランキング
記事検索
過去ログ
[トピック内 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
-