“ global :: System”の違いは何ですかおよび“システム” .NETで?

StackOverflow https://stackoverflow.com/questions/162537

質問

VS 2005プロジェクトをVS 2008にアップグレードしたばかりで、変更を調査していました。 .Designer.csファイルの1つが大幅に変更されていることに気付きました。変更の大部分は、単に System global :: System に置き換えただけです。たとえば、

protected override System.Data.DataTable CreateInstance()

なった

protected override global::System.Data.DataTable CreateInstance()

ここで何が起こっているのですか?

役に立ちましたか?

解決

::演算子は名前空間エイリアス修飾子と呼ばれます。

 global::System.Data.DataTable 

と同じ:

 System.Data.DataTable

Visual Studio 2008は、System ...という名前のクラスを作成したときにときどき発生する曖昧な参照の問題を回避するために、デザイナーが生成したコードに追加しました。例:

class TestApp
{
    // Define a new class called 'System' to cause problems.
    public class System { }

    // Define a constant called 'Console' to cause more problems.
    const int Console = 7;
    const int number = 66;

    static void Main()
    {
        // Error  Accesses TestApp.Console
        //Console.WriteLine(number);
    }
}

ただし:

global::System.Console.Writeline("This works");

さらに読むには:

http://msdn.microsoft.com/ en-us / library / c3ay4x3d(VS.80).aspx

他のヒント

人々がこのリストの#1 。 :)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top