いつもお世話になっています。
あるクラスのインスタンス間での共通データを持つため例えば以下のクラスを作る場合の
static メンバの記述で疑問に思いました。
class A { public static int Test { set; get; } // static メンバ public A() //コンストラクタ 過去の情報では public static A()と書くがこれもOK { Test = 10; // 過去の情報ではA.Testと書く がこれでも問題ない } public void Mes() { Test =5; // 問題ない } }
このクラスはインスタンス化して問題なく動きます。static メンバのTestは Aクラス外部の
呼び出し元からも A.Test として期待通りに利用できます。(Visual studio 2019)
またクラス内の非static メソッド内でも当たり前かもしれませんが、クラス名A省略で動きます。
ところが、web よりstatic メンバの使用法を調べると、staticメンバTest をコンストラクタで
初期化する場合は、
- public A() ではなく public static A()と書く、
- その中でTest = 10 ではなく、A.Test=10 と書くように、
とあります。当初はそのようにA.Testと書いていたのですが、Visualstudioが Aは省略できる
とのヒントまで表示してきます。
疑問点は、現時点のC#バージョンでは上記のクラスのstatic メンバはクラス名記述省略OKと
なっているのでしょうか?それならそれでうれしいのですが。記載例を他に見つけられず。
正しい使い方があるにも関わらず、省略可として動けば省略したくなるもので、健全なのかどうか?
疑問に思いました。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー