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との合わせ技。






 

このブログの人気の投稿

1月23日(金)1、2コマ目

1月22日(木)2コマ目

2月17日(火)3コマ目