3

VS2005プロジェクトをVS2008にアップグレードし、変更を検討していました。.Designer.csファイルの1つが大幅に変更されていることに気づきました。変更の大部分は、 Systemglobal::Systemに置き換えるだけでした。例えば、

protected override System.Data.DataTable CreateInstance()

なりました

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

何が起きてる?

4

2 に答える 2

13

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

 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

于 2008-10-02T14:23:19.357 に答える
1

人々がこのリストの 1 位にならないようにするため。:)

于 2008-10-29T00:59:47.753 に答える