0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

C#のグローバル変数を実現する上で一番わかりやすかった記事って結局これだった

Last updated at Posted at 2020-05-29

嘘をつきました、記事より、いただいたコメントの方が分かりやすかったです。

@albireoさんより紹介

public static partial class App
{
    static public string Cnstr = "";        // グローバル変数の宣言
    static public string ID= "";
    public string NonStatic = "abc";        // エラーになる

  //頑張って分かるやりかた。
  //1、「エラーになる」と「・・・の宣言」の違いを比較する。
  //2、クラス名称を別例(もう一つの例)と比較する。普通のクラス宣言とも比較する。
  //3、for文やif文などで条件分岐から値を取得する場合にもCnstr、つまりグローバル変数が使える便利。
   //  でもクラス内だけならクラスのグローバル宣言要らない可能背があるかも?
}

//外部クラスでグローバル変数をつかう。
    private void Btn_Update_Click()
    {
       Cconsole.WriteLine(App.Cnstr);        // App で宣言されたグローバル変数を利用
    }

@shiracamus さんより以下のコメントをいただきました。
一般的に「クラス変数」と呼ばれるものですね。
オブジェクト指向では、依存するクラスを減らす努力が必要です。
つまり、クラス間の依存をなくす。

何故なくすかっていうと、何も考えずに文字を羅列すると
「複数のクラスに色々またがってるから管理が面倒。かつ危険」
「このクラスって何してるん?あれ?」ってなりそう
「引継ぎの時面倒」「作り直ししたくなる」
なんだけど。何でかぐぐる。

これが分かりやすかった。と紹介しましたが・・・嘘でした。
https://w.atwiki.jp/cs00/pages/11.html
これ中身

//グローバル変数を設定。
    public partial class App : Application
    {
        static public string Cnstr = "";        // グローバル変数の宣言
        static public string ID= "";
    }

//グローバル変数をつかう。
    private void Btn_Update_Click()
    {
        App.Cnstr = "SQL";        // App で宣言されたグローバル変数を利用
    }

@shiracamusさんより、
「クラスの数を複数設けないように努力する必要が有る。」というアドバイスもあり
グローバル変数用のクラスを設けなくてもいいことがわかりました。

0
2
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?