コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
最近の更新
未作成ページ
おまかせ表示
ヘルプ
MonoBook
検索
検索
ログイン
個人用ツール
ログイン
ログアウトした編集者のページ
もっと詳しく
投稿記録
トーク
「
C Sharp/null許容型
」を編集中
ページ
議論
日本語
閲覧
編集
ソースを編集
履歴表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
編集
ソースを編集
履歴表示
全般
リンク元
関連ページの更新状況
特別ページ
ページ情報
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。
スパム攻撃防止用のチェックです。 けっして、ここには、値の入力は
しない
でください!
[[C Sharp|C#]]における'''null許容型'''(ぬるきょようあたいがた)とは、本来であればnull値を受け入れない[[C Sharp/値型|値型]]を拡張し、null値を受け入れるようにしたものである。 一部では'''null許容値型'''と「値」をつけて呼ばれることもある。一文字違いのどうでもいい点であり、大半の[[C Sharp|C#]]使いには「null許容」まで言えば通じるのでどちらを使っても良い。[[MSDN]]上でも両方とも使われている。 本来「[[ぬるり]]」が発生しないはずの[[C Sharp/値型|値型]]において「[[ぬるり]]」が発生するようになるので取扱いには注意する必要がある。 == 構文 == null許容型の実体は[[C Sharp/ジェネリック|ジェネリック]]なNullable<T>構造体であり、本来であれば以下のように記述する。 <source lang="csharp"> Nullable<int> x; </source> ただ、上記の記法は[[キーボード]]を打つ量が多いということで、[[C Sharp|C#]]には[[C Sharp/値型|値型]]の末尾に「'''?'''」を付けることでnull許容型を表すという省略表記が用意されており、通常はこちらを使うのが一般的である。 <source lang="csharp"> int? x; </source> == 概要 == null許容型はもともとnull値を受け入れない値型専用であり、もともとnull値を受け入れる参照型には使えない(使う必要がない)。 Nullable<T>構造体では値型以外を受け入れないようにするため、Nullable<T>構造体の宣言において以下のようにwhereによる縛りを付けることで実現している。 <source lang="csharp"> [SerializableAttribute] public struct Nullable<T> where T : struct, new() </source> なお、Nullable<T>自体も値型だが、「Nullable<Nullable<int>> n;」などとは書けない。 == その他 == [[データベース]]とのマッピングにnull許容型を使っていると、それとは正反対の参照型がnullを受け入れなくなるNotNullable<T>が欲しくなるが、そのようなものは今のところ無いと思われる。とくにデータベースとのマッピングにnull許容型を使っていると、データベース側のTEXT NOT NULLなどと対応するnullを受け入れないstringクラスなどが欲しくなる。 個人的には[[プロパティ]]の[[セッター]]で[[C Sharp/null合体演算子|null合体演算子]]を使い強引に回避する方法で何とかしているが、この回避策ではC# 3.0で導入された[[C Sharp/自動プロパティ|自動プロパティ]]が使えないので非常に面倒な古くさい記法となってしまっている。 == 用途 == === RDBMS === [[MySQL]]や[[Oracle Database]]、[[SQL Server]]などの[[RDBMS]](俗に言う[[データベース]])では、フィールドごとにNULLを受け入れるか受け入れないかを指定できるが、そのような外部システムの型とC#の型をマッピングする際にムダに悩む必要がなくなる。 == その他 == == 関連項目 == * [[C Sharp/null合体演算子|null合体演算子]] * [[C Sharp/値型|値型]] == 参考文献 == <references/> == 外部リンク == * [http://msdn.microsoft.com/ja-jp/library/1t3y8s4s.aspx null 許容型 (C# プログラミング ガイド) - MSDN] {{stub}}
編集内容の要約:
MonoBookへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MonoBook:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の確認用の質問に回答してください (
詳細
):
1たす1は?(全角で入力してください)
キャンセル
編集の仕方
(新しいウィンドウで開きます)
このページで使用されているテンプレート:
テンプレート:Stub
(
編集
)
本文の横幅制限を有効化/無効化