自動プロパティに初期値を設定するコードと実行結果を紹介します。
こちらの記事では自動実装プロパティを利用した実装を紹介しました。
自動プロパティで初期値を設定したい場合があります。通常のプロパティであれば、コンストラクタで初期化するのが一般的ですが、
コンストラクタが無い場合など、初期化のためだけにコンストラクタを実装するのは大変なため、簡単に初期化のロジックを記述したい場合があります。
この記事では、自動プロパティに初期値を設定するコードを紹介します。
自動プロパティで初期値を設定する場合には次の書式を利用します。
(アクセス識別子) (プロパティの型) (プロパティ名) {get; set;} = (初期値);
public string text {get;set;} = "None";
クラスを作成し、下記のコードを記述してコンパイルすると次の警告が出ます。
英語では以下のメッセージになります。
ワーニング解消のためには、コンストラクターでプロパティの初期化をするかNull許容型のプロパティに変更する必要があります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InitAutoImplementedProperty
{
public class MyClass
{
public string value1 { get; set; }
}
}
プロパティを初期化するため、従来の実装では次のコードのようにコンストラクターを実装します。
ワーニングは解消されますが、プロパティの初期化のためだけにコンストラクターを作成するのは、コードが増えあまり良くない場合もあります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InitAutoImplementedProperty
{
public class MyClass
{
public string value1 { get; set; }
public MyClass()
{
value1 = "在庫";
}
}
}
自動実装プロパティの場合、先に紹介した書式で初期値を設定できます。
コードは次の通りになります。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InitAutoImplementedProperty
{
public class MyClass
{
public string value1 { get; set; }
public string value2 { get; } = "ぺんぎんクッキ-";
public int value3 { get; set; } = 8;
public MyClass()
{
value1 = "在庫";
}
}
}
すべてのプロパティに初期化を設定することで、コンストラクタの実装を不要にできます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InitAutoImplementedProperty
{
public class MyClass
{
public string value1 { get; set; } = "在庫";
public string value2 { get; } = "ぺんぎんクッキ-";
public int value3 { get; set; } = 8;
}
}
下図のフォームを作成します。ボタンとMultiline
プロパティをtrueに設定した、複数行のテキストボックスを配置します。
namespace InitAutoImplementedProperty
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
MyClass m = new MyClass();
textBox1.Text += "Value1:" + m.value1 +"\r\n";
textBox1.Text += "Value2:" + m.value2 + "\r\n";
textBox1.Text += "Value3:" + m.value3.ToString() + "\r\n";
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace InitAutoImplementedProperty
{
public class MyClass
{
public string value1 { get; set; } = "在庫";
public string value2 { get; } = "ぺんぎんクッキ-";
public int value3 { get; set; } = 8;
}
}
MyClassのプロパティを自動実装プロパティで記述し、それぞれのプロパティの初期値を設定しています。
フォームのボタンをクリックすると、MyClassのインスタンスを作成し、クラスのプロパティの値をテキストボックスに表示する動作になります。
プロジェクトを実行します。下図のウィンドウが表示されます。
[button1]をクリックします。テキストボックスにプロパティの値が表示されます。プロパティの初期値として設定した値が表示されることが確認できます。