2015-06-08 6 views
6

Warum verwendet Int32int in seiner source code? Ist Int32 gleich int in C#? Was ist der ursprüngliche Quellcode für int? Ich bin verwirrt ..Warum benutzt `Int32`` int` im Quellcode?

[Serializable] 
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)] 
[System.Runtime.InteropServices.ComVisible(true)] 
#if GENERICS_WORK 
    public struct Int32 : IComparable, IFormattable, IConvertible 
     , IComparable<Int32>, IEquatable<Int32> 
///  , IArithmetic<Int32> 
#else 
    public struct Int32 : IComparable, IFormattable, IConvertible 
#endif 
    { 
     internal int m_value; // Here???? 

     public const int MaxValue = 0x7fffffff; 
     public const int MinValue = unchecked((int)0x80000000); 

     ... 
    } 

dort das gleiche Problem ist auch zwischen Boolean und bool.

+0

Int32 ist 'struct'.It contained Methoden und stuffs für die Manipulation von int, int ist System definierten Datentyp. –

+0

Das ist * der ursprüngliche Quellcode für 'int'. Einige der tatsächlichen inneren Abläufe sind Teil des Compilers und der Laufzeit, aber insofern es Quellcode gibt, das ist der Quellcode. – hvd

+1

Vielleicht ein Duplikat: http://stackoverflow.com/questions/16113850/if-int32-is-just-an-aliass-for-in-how-can-the-int32-class-use-an-int Nur verwandt : http://stackoverflow.com/questions/18018281/regarding-primitive-data-types-in-c-sharp –

Antwort

7

int, bool usw. sind einfach Aliasnamen für eingebaute Typen wie Int32 bzw. . Sie sind Kurzschrift, daher ist es sinnvoll, sie zu verwenden. sogar in ihren eigenen Definitionen.

Die Aliase sind in den Compiler integriert, so dass keine "Hühner und Eier" -Situation von Int32 kompiliert werden muss, bevor int zugänglich ist. Es gibt keinen "Original-Quellcode" für int. Die "Quelle" ist für Int32 und wird zwischen der Funktionalität geteilt, die in der CLR (zum Behandeln der Grundelemente) und dem Rahmenwerk (zum Definieren der Funktionalität zum Manipulieren dieser Grundelemente) eingebaut ist. Als this answer to a duplicate question explains ist die Quelle für Int32 keine gültige Definition des Typs selbst; das ist in der CLR eingebaut. Daher muss der Compiler die normalerweise illegale Verwendung von int innerhalb dieser Datei verfälschen, damit der Typ Int32 Funktionalität haben kann.

+1

Also "Int32" "sich" selbst "rekursiv"? –

+5

Dies beantwortet die Frage überhaupt nicht. – hvd

+0

@hvd, ich denke du bist verwirrt. Vielleicht möchten Sie erklären, warum sie die Frage nicht beantwortet und vielleicht die Frage selbst "richtig" beantwortet? –

Verwandte Themen