10

Fieldsクラスまたは構造体内の変数でありlocal variables、メソッド内にありglobal variables、すべてのスコープ(クラスとメソッドを含む)でアクセスできます。

これはそうfieldsかもしれないと私に思わせますが、クラスの外にある変数を考えることはできませんが、global variables必ずしもglobal variablesそうとは限りません。fields

2つの間に明確な違いはありますか?

4

4 に答える 4

6

このC#にタグを付けましたが、C#には実際には「グローバル変数」がありません。

しかし、public staticフィールド(またはプロパティ)は近くになります。静的はそれを特異にし、「グローバル」な寿命を与えます。

于 2012-10-16T11:46:24.420 に答える
3

ウィキペディアの定義はここで適切だと思います:

オブジェクト指向プログラミングでは、フィールド(データメンバーまたはメンバー変数とも呼ばれます)は、クラスまたはオブジェクト内にカプセル化されたデータです。通常のフィールド(インスタンス変数とも呼ばれます)の場合、オブジェクトのインスタンスごとにインスタンス変数があります。たとえば、EmployeeクラスにはNameフィールドがあり、従業員ごとに1つの異なる名前があります。静的フィールド(クラス変数とも呼ばれます)は、すべてのインスタンスで共有される1つの変数です。

したがって、グローバル変数はほとんど静的フィールド(したがってフィールド)です。

于 2012-10-16T11:48:33.813 に答える
1

グローバル変数は、あなたが言うようにスコープ全体でアクセスされる変数であり、通常、これはstaticクラスで行われます。コード例:

public class Demo {
    public static string ThisIsGlobal = "Global";
    private string _field = "this is a field in the class";
    public void DoSomething()
    {
        string localVariable = "Local";
        string localVariable2 = ThisIsGlobal; // VALID
    }

    public static void GlobalMethod()
    {
        string localVariable = _field; // THIS IS NOT VALID!
    }
}

多くの人がグローバル変数と状態は悪いと言いますが、あなたがそれを使うべきである限り、私はそうは思いません。上記の例では、はキーワードThisIsGlobalを持っているため、グローバル変数です。static例でわかるように、インスタンスメソッドから静的変数にアクセスできますが、静的メソッドからインスタンス変数にアクセスすることはできません。

于 2012-10-16T11:48:13.847 に答える
0

多くの変数はクラスの特定のインスタンスの外にありますが、それらはすべて「いくつかの」クラス内に含まれています。基本的に、グローバル変数は、オブジェクトグラフの上部近くにあり、オブジェクトグラフの後半のすべてのクラス/メンバーが表示/参照できる場所です。

しかし、グローバル変数はまだいくつかのクラス/モジュールのフィールドにすぎません。

于 2012-10-16T11:51:24.520 に答える