2011-11-28 11 views
23

C#3.0には自動実装プロパティの新機能が付属していることがわかりました。私は追加のprivate変数を宣言する必要はないので、この(以前のプロパティと比較)、以前の私は今、私は、このデフォルト値を設定したいASP.NETの自動実装プロパティの既定値を設定する方法

public bool IsPopup 
{ 
    get; set; 
} 

すなわち、自動実装プロパティにそれを変換してきた財産すなわち

private bool isPopup = true; 
public bool IsPopup 
{ 
    get 
    { 
     return isPopup; 
    } 
    set 
    { 
     isPopup = value; 
    } 
} 

を使用していましたプロパティをtrueにしても、page_initメソッドでも使用しないと、私は試しましたが成功しませんでした。 1つはこれを行う方法を説明しますか?

+3

コンストラクタで初期化 –

答えて

39

あなたはデフォルトコンストラクタでプロパティを初期化することができます

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 
+0

ありがとう、私はそれが唯一の方法だと思う。 –

+0

より具体的な答えを探しているので、コンストラクターに追加のコードを記述する必要があります。古い規則を使用せずに、自動実装されたプロパティー自体に記述する方法はありません。 –

+2

何とかあなたのプロパティを初期化する必要があります。バッキングフィールドがないので(コンパイラによって生成されます)、他のオプションはありません。このような状況下では、私は完全な特性を書いています。幸いにも、あなたはこれを行うためにインテリセンスを得ています。 – slfan

0

あなたは自動プロパティに指定DefaultValueAttribute

+0

いいえ私は決して使用しない.net 4.0 –

+9

これは正しいway.Itではないことがわかったので、DefaultValueAttributeは、プロパティがデフォルト値を持つことができ、実際にはそれを設定していないことをメタデータに指示するようです。これは誰かを助ける。 –

6

属性は、バッキングフィールドには適用されませんので、デフォルト値の属性がプロパティのこのタイプのために動作しませんしようとしています。

ます、しかし、自動プロパティを初期化することができます

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

+1

情報ありがとうございました –

+1

良い編集Eagle-Eye、C#6.0を含むように更新してくれてありがとうございます。 –

0
using System.ComponentModel; 

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

あなたはAkshat Jeewan Sharmaの答えを見ましたか? –

+0

「コピー&ペースト」されましたか? –

+2

これを理解するための@Jeewan Sharmaの答えが正しい方法ではありません。 –

0

の下に、この方法の利点の一つはあなたがブール種類

using System.ComponentModel; 

public class ClassName 
{ 
    [DefaultValue(true)] 
    public bool IsPopup{ get; set; } 
} 
ためのnull値をチェックする必要はありません であるようにあなたがデフォルトプロパティ値を使用することができます
+2

これは実際にデフォルト値を設定していないだけで、デフォルト値が –

+0

であることを示しています。@JoeFlateau両方のメソッドの違いは何か説明できますか?コントローラからそのプロパティにアクセスするとB'cosがtrueになります。それで? – Sampath

+4

DefaultValueは純粋に情報のみです.Visual Studioでは太字ではない値が表示されます。 –

関連する問題