“ global :: System”の違いは何ですかおよび“システム” .NETで?
-
03-07-2019 - |
質問
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 。 :)
所属していません StackOverflow