web-dev-qa-db-ja.com

ASP.NETの自動実装プロパティのデフォルト値を設定する方法

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に設定したいのですが、試しましたが成功しませんでした。誰でもこれを行う方法を説明できますか?

26
Imran Rizvi

デフォルトのコンストラクタでプロパティを初期化できます。

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
43
slfan

自動プロパティに指定された属性はバッキングフィールドには適用されないため、このタイプのプロパティではデフォルト値の属性は機能しません。

ただし、自動プロパティを初期化できます。

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#バージョンはこれをサポートしていないため、コンストラクターで自動プロパティのデフォルト値を初期化する必要があります。

7
Ed DeGagne

試しましたか DefaultValueAttribute

0

以下のようにdefault property valueを使用できます

この利点の1つはあなたですnull値を確認する必要はありませんブールタイプ

using System.ComponentModel; 

public class ClassName
 {
   [DefaultValue(true)]
   public bool IsPopup{ get; set; }
 }
0
Sampath
using System.ComponentModel;

[DefaultValue(true)]
public bool IsPopup
{
    get
    {
      return isPopup;
    }
    set
    {
      isPopup = value;
    }
}
0
Nawazish