12

たとえば、C# の "int" 型は、実際には System.Int32 である構造体に過ぎないことがわかっています。もしそうなら、「システムを使用している」場合。がプログラム内でコメントされている場合、int 型は使用できないはずです。ただし、int 型は使用できます。私の質問は、これらのタイプはどこから来たのですか?

//using System;
class Program
{
    static void Main() {
         int x = 0;  // it still work, though int is under System namespace, why??
    }
}
4

1 に答える 1

24

intstring、などの型エイリアスobjectは言語に組み込まれており、例usingとは異なり、使用できるディレクティブは必要ありませんDateTime

intただし、それについて考えるのに役立つ場合は、の略であると考えることができますglobal::System.Int32

class Program
{
    static void Main() {
         int x = 0;
    }
}

に変換

class Program
{
    static void Main() {
         global::System.Int32 x = 0;
    }
}

実際、型エイリアスはキーワードであるため、期待どおりに再定義することさえできません。

public class int { } // Compiler error: Identifier expected; 'int' is a keyword

何らかの理由でこれを行いたい場合は、次のように識別子をエスケープする必要があります。

public class @int { }

int x = 0;             // equivalent to global::System.Int32
@int y = new @int();   // equivalent to global::MyNamespace.@int
于 2013-09-15T17:58:06.357 に答える