2017-12-12 4 views
1

私はこの割り当てを持っている:ここではスタティッククラス内のスタティックオブジェクトのプロパティにどのように値を割り当てることができますか?

Counts.btnCountViewsAvg.BtnCount = 123; 

は、私が使用するクラスです。

public static class Counts 
{ 
    public static BtnCountViews btnCountViewsAvg; 
} 

public class BtnCountViews // this class used in many places 
{ 
    public int BtnCount { get; set; } 
    public int Views { get; set; } 
} 

私がやりたい何がBtnCountに123を割り当てることですが、それはnullに割り当てることはできませんと言います。私がチェックすると、btnCountViewsAvgはnullです。私はスタティックを使用しました。私は、アプリケーション内で1つのCountsクラスを持ちたいだけです。

は、誰かが私に、私はそれがNULLであることを、あなたのCounts.btnCountViewsAvgあるCounts.btnCountViewsAvg.BtnCount

+0

'BtnCountViews'は、おそらく、' static'ないBecase? – JohnyL

+0

"しかし、nullに割り当てることはできません" - 正確な*エラーメッセージを提供してください。 –

+0

私はbtnCountViewsを静的にすることができますか?たとえば、LINQを使ってデータを取得するときに、アプリケーションのさまざまな部分でそれを使用できますか? – Alan2

答えて

1

に値を割り当てることができます方法についていくつかのアドバイスを与えることができます。 プロパティを設定するには、その前にインスタンス化する必要があります。

Counts.btnCountViewsAvg = new BtwCountViews(); 

さらにあなたはそのようにそれ初期化剤のオブジェクトを使用してインスタンス化できます:btnCountViewsAvgのみが作成されることを確実にするために

Counts.btnCountViewsAvg = new BtwCountViews { BtnCount = 123 }; 

次の操作を実行する必要がある値をインスタンス化する

次の操作を行うことができたら:

public static class Counts 
{ 
    public readonly static BtnCountViews btnCountViewsAvg = new BtnCountViews(); 
} 

それとも、これはより良いアプローチだろうジョンSkeetsプロパティを使用しての提案ではなく、公共の場からのフォローする:私は略語を削除するために、あなたのクラスの名前を変更し

public static class Counts 
{ 
    public static ButtonCountViews ButtonCountViewsAvg { get; } = new ButtonCountViews(); 
} 

注意。

+0

btnCountViewsAvgが静的なクラスにあるので、私はこれを一度しか行うことができないと仮定するのは正しいです。どのような場合に作成されますか? – Alan2

+1

静的ではありません。一度しか作成したくない場合は、readonlyキーワードを参照する必要があります。 – Bijington

+0

@ Alan2さらに、単一のインスタンスを作成したい場合は、シングルトンパターンを参照することもできます。 – Bijington

1

あなたは2つのオプションがあります。

  • だけ

    public static class Counts 
    { 
        public static BtnCountViews btnCountViewsAvg = new BtnCountViews(); 
    } 
    
  • たら、新しいオブジェクトを作成するもしくはそれをあなたがそれを必要とするたびに作成します。あなたの

    Counts.btnCountViewsAvg = new BtnCountViews() 
    { 
        BtnCount = 123 
    }; 
    
+0

最初の例にreadonlyキーワードを追加すると、一度だけ作成されることが保証されます。 – Bijington

+0

@Bijington - あなたが意味することの例を教えてくれますか?ありがとう – Alan2

+0

@ビーイング私はそれがプロパティだけを取得するように変換する方が良いと思います: 'public static BtnCountViews BtnCountViewsAvg {get; } =新しいBtnCountViews(); ' –

1

を、おそらく、このようなものが必要です:インスタンスを作成するBtnCount = 123BtnCountViewsと静的フィールドに代入する:

public static class Counts 
{ 
    // we create a instance: new btnCountViewsAvg() 
    // then we set up a property of this instance: { BtnCount = 123, } 
    public static BtnCountViews btnCountViewsAvg = new btnCountViewsAvg() { 
     BtnCount = 123, 
    }; 
} 
関連する問題