本記事は、C# において、XMLファイル読み込みでのNull許容型をのメリットを書きます。
- Windows10
- Microsoft Visual Studio Community2022
- .NET 6
XMLファイルを読み込む処理は↓を参考にしてください。
Null許容型を使用するメリット
読み込むXMLファイルのタグが未設定のとき、何らかの処理が必要であると伝えられる
Null許容型は、「変数に値がないかもしれない」ということを表します。
すなわち、メンバ変数がNull許容型ならば、メンバ変数の値がNullの可能性があります。Nullの時の処理が必要になります。
タグの未設定が許可されていない場合にNull許容型を使うといいでしょう。
メンバ変数の値がNullならば、XMLファイルの対応するタグが未設定となっています。
逆に、Null許容型を使用しないメンバ変数は、正常値が設定されていることを保証します。XMLファイルのタグがないときの処理は必要がありません。
タグがないときは、Xml対応のクラスのコンストラクタでメンバ変数を初期化します。
サンプルで確認
AdministratorXml クラスは、Administrator.xml に対応するクラスです。
AdministratorXml クラスで、idをNull許容型とします。
namespace XmlProject
{
/// <summary>
/// 管理者Xml
/// </summary>
public class AdministratorXml
{
/// <summary>ID</summary>
public string? id;
/// <summary>パスワード</summary>
public string pass;
/// <summary>年齢</summary>
public int age;
/// <summary>年齢表示判定</summary>
public bool isViewAge;
/// <summary>役職</summary>
public string position;
public AdministratorXml()
{
id = null;
pass = "abc";
age = 30;
isViewAge = false;
position = "未設定";
}
}
}
XMLファイルにidタグがない場合は、AdministratorXmlクラスのオブジェクトのメンバ変数名がNullとなります。
Null許容型のメンバ変数
idはNull許容型となっています。Administrator.xmlのidタグがない場合は、id=Null となります。
Administrator.xmlを読み込むとき、nullのときの処理を書く必要があります。
using XmlProject;
string filePath = Environment.CurrentDirectory + "/AdministratorXml.xml";
AdministratorXml administratorXml = XmlLoader.Load<AdministratorXml>(filePath);
string id = administratorXml.id ?? throw new Exception();
Console.WriteLine("ID= " + id);
Console.WriteLine("パスワード= " + administratorXml.pass);
Console.WriteLine("年齢= " + administratorXml.age);
Console.WriteLine("年齢表示判定= " + administratorXml.isViewAge);
Console.WriteLine("役職= " + administratorXml.position);
idがNullのときは、例外をスローするようにしました。
Console.WriteLine("ID= " + administratorXml.id);
と書いた場合、特に警告はありません。idが設定されていないときは、実行したとき「ID=」と表示されます。Null のときの処理の書き忘れは注意する必要があります。
Null許容型でないメンバ変数
逆に、Null許容型でないメンバ変数を使用する場合は、「このメンバ変数は正常値が設定されている。」ということを、表すことができます。
言い換えると、「Nullの処理は書かなくてもよい。」ということです。
タグがないときは、コンストラクタで設定した値を初期値として設定できます。
まとめ
以上のことから、
- メンバ変数がNull許容型 – Nullの処理が必要
- メンバ変数がNull許容型でない – Nullの処理は不要
メンバ変数がNull許容型なら、Null時の処理が必要ということをこのクラスを使う人に伝えることができます。
本記事は、C# において、XMLファイルを読み込むとき、Null許容型を使用するときのメリットを書きました。
コメント