DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Static なClassの用途

環境/言語:[C#2]
分類:[.NET]

基本的なことですが、よろしくお願いします。
Static なClassを使おうと思いました。
プロジェクト中で1つしか作成されないので、プログラムの初期設定変数や、広域変数を初期設定ファイルから読み込んで、すべてのクラスから使えたら便利と思ったわけです。

static class StaCls
{
public static int staInt;
private static int i;
}
これはOK
メインフォームからも
int i = StaCls.staInt;
で使えます。
しかし、StaCls中で設定ファイルを読み込むメソッドを作ろうとして
public void readXML()
{
}
を追加したところ
「静的クラスでインスタンスメンバを宣言することはできません」
というエラーで終わり。

ということは
・StaticなClassは変数しか定義できない
・広域変数という使い道しかない
という結論でいいのでしょうか
> ということは
> ・StaticなClassは変数しか定義できない
> ・広域変数という使い道しかない
> という結論でいいのでしょうか

いいえ。

初期化子で初期化しきれない静的メンバは、静的コンストラクタで初期化するもんです。
しむらー!static!static!

それはそれとして。

> public void readXML()
> {
> }

static なクラスの中には static なメソッドしか置けないのでは。
エラーメッセージの「インスタンスメンバを宣言できない」というのはそういうことです。
  • 題名: Re[1]: Static なClassの用途
  • 著者: はいこーん
  • 日時: 2006/07/24 11:59:24
  • ID: 16810
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
何か誤解しすぎているようですね。
staticメンバしかおけないってだけです。

メソッドだろうとフィールドだろうとインスタンスメンバでなければ定義できますよ。
  • 題名: 分かりました。感謝!
  • 著者: 可不可
  • 日時: 2006/07/24 17:48:17
  • ID: 16820
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
早速の回答ありがとうございました。
ヒントになることがたくさんあり、基本に戻り試したところ、分かりました。
要するに、staticなクラスはすべてstaticでなければならない、ということでしょうか。おかしなとこがあればご指摘を。

static class StaCls
{
public static int staInt;
private static int i;
static StaCls()
{// 静的コンストラクタ
staInt = 88;
i = half(staInt);
}
public static int ID
{//プロパティ
get { return i; }
}
public static int Nibai(int x)
{//広域関数
return x * 2;
}
private static int half(int y)
{//プライベート関数
int w;
w = staInt / 2;
return w;
}

呼び出し方
public partial class Form1 : Form
{
int i = StaCls.staInt;

public Form1()
{
InitializeComponent();
int j;
j = StaCls.Nibai(6);
j = StaCls.ID;
}
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板