2月20日(金)3、4コマ目
今日、やったこと
null許容型
今日のホワイトボード
作りたいもの
前回作った価格帯で検索するWebアプリケーションを、下図のように検索条件の入力状況で3パターンの検索ができるようにしたい。
|
| 図 作成する検索アプリ |
未入力か、否かを判断したい
検索条件が未入力の場合、OnPost(int price1, int
price2)の各引数には0が代入される。
これでは引数が0の時は
- 0が入力された
- 未入力
のどちらで、未入力かどうかは判断できない。
int型のような値型にはnullを代入することができないが、null許容型にするとnullを代入することができる。
引数をnull許容型にすれば、未入力の場合はnullが代入されて判断することができる。
null
なにもない状態。
下図の変数str2にはなにも代入されていない。これがnull。
|
| 図 null |
値型と参照型
string型やxxxクラス型は変数に参照情報が代入される。こんな型が参照型。nullが代入できる。<=今は警告
int型やdouble型は変数に代入値が代入される。こんな型は値型。
|
| 図 参照型と値型 |
null許容型
参照型はnullが代入できた。->今はnullを代入すると警告
値型はnullを代入できない。
変数宣言時に型に?をつけると、nullが代入できるnull許容型になる。
|
| 図 null許容型 |
null許容型の合体演算子??
null許容型変数が
- 非nullのときは値を返す
- nullのときは別の値を返す
3項演算子的なnull合体演算子がある。便利。
|
| 図 null合体演算子 |
ソースコード
検索条件入力状況で3パターンの検索ができるように改造。
ItemDAO.cs
3パターンの検索メソッドを追加。
| メソッド | 役割 |
|---|---|
| List<Item> SelectByPriceBetween(int price1, int price2) | price1以上、price2以下で検索 |
| List<Item> SelectByPriceGreaterThanEquals(int price) | price以上で検索 |
| List<Item> SelectByPriceLessThanEquals(int price) | price以下で検索 |
Index.cshtml
Index.cshtml.csのMessageプロパティはnull許容型。
nullのときと非nullのときの表示内容の切り替えにnull合体演算子を使っている。
Index.cshtml.cs
OnPost()の引数をnull許容型へ。
これで未入力のときはnullが代入される。
次回は
DBNullとの合わせ技。




