C#3.0には自動実装プロパティの新機能が含まれていることを知りました。これで追加のプライベート変数を宣言する必要がないので(以前のプロパティと比較して)、以前はプロパティを使用していたため、.
private bool isPopup = true;
public bool IsPopup
{
get
{
return isPopup;
}
set
{
isPopup = value;
}
}
これをAuto-Implementedプロパティに変換しました。
public bool IsPopup
{
get; set;
}
このプロパティのデフォルト値をpage_initメソッドでも使用せずにtrueに設定したいのですが、試しましたが成功しませんでした。誰でもこれを行う方法を説明できますか?
デフォルトのコンストラクタでプロパティを初期化できます。
public MyClass()
{
IsPopup = true;
}
C#6.0では、通常のメンバーフィールドと同様に、宣言時にプロパティを初期化できます。
public bool IsPopup { get; set; } = true; // property initializer
直接またはコンストラクターで初期化できるが、クラスの他のメソッドでは設定できない、実際の読み取り専用自動プロパティを作成することも可能になりました。
public bool IsPopup { get; } = true; // read-only property with initializer
自動プロパティに指定された属性はバッキングフィールドには適用されないため、このタイプのプロパティではデフォルト値の属性は機能しません。
ただし、自動プロパティを初期化できます。
VB.NET
Property FirstName As String = "James"
Property PartNo As Integer = 44302
Property Orders As New List(Of Order)(500)
C#6.0以降
public string FirstName { get; set; } = "James";
public int PartNo { get; set; } = 44302;
public List<Order> Orders { get; set; } = new List<Order>(500);
C#5.0以下
残念ながら、6.0より前のC#バージョンはこれをサポートしていないため、コンストラクターで自動プロパティのデフォルト値を初期化する必要があります。
試しましたか DefaultValueAttribute
以下のようにdefault property valueを使用できます
この利点の1つはあなたですnull値を確認する必要はありませんブールタイプ
using System.ComponentModel;
public class ClassName
{
[DefaultValue(true)]
public bool IsPopup{ get; set; }
}
using System.ComponentModel;
[DefaultValue(true)]
public bool IsPopup
{
get
{
return isPopup;
}
set
{
isPopup = value;
}
}