Przeczytałem, że wszystkie prymitywy wchodzą w przestrzeń nazw System
. Jeśli skomentuję numer using System
, spodziewałbym się, że w moim programie wystąpi błąd kompilacji. Jednak działa z powodzeniem. Dlaczego to?Dlaczego prymitywne typy danych działają bez uwzględniania przestrzeni nazw System?
Odpowiedz
To dlatego int
jest aliasem dla System.Int32
, a od „Int32” już jest poprzedzona jego nazw (tzn. „W pełni wykwalifikowanym”), składnia jest legalny, bez konieczności określania using System;
u do góry twojego kodu.
MSDN fragment poniżej opisuje ten Concept-
Większość C# aplikacji rozpocząć o przekroju za pomocą dyrektyw. Ta sekcja zawiera listę obszarów nazw, które aplikacja będzie często używać, i zapisuje programistę od podania w pełni kwalifikowanej nazwy za każdym razem, gdy używana jest metoda zawarta w tym dokumencie. Dla przykład, w tym linię:
using System;
na początku programu, programista może użyć kodu:
Console.WriteLine("Hello, World!");
Zamiast:
System.Console.WriteLine("Hello, World!");
System.Int32
(alias "int") byłby drugim. Oto przykład tego w kodzie -
//using System;
namespace Ns
{
public class Program
{
static void Main(string[] args)
{
System.Int32 i = 2; //OK, since we explicitly specify the System namespace
int j = 2; //alias for System.Int32, so this is OK too
Int32 k = 2; //Error, because we commented out "using System"
}
}
}
Ponieważ linia 11 nie jest w pełni wykwalifikowany/aliasing w pełni kwalifikowanego typu, using System;
musiałyby być komentarzem do błędu odejść.
Dodatkowe references-
Built-In Types Table (C# Reference) (lista wszystkich wbudowanych typów i ich ekwiwalenty .NET Framework)
Albo gama mojego monitora jest wyłączona, albo twoja wizja jest podobna do pszczoły;) (schemat kolorów) – MickyD
Tak. Zazwyczaj koduję na czarnym tle. Po prostu zmieniłem kolor na biały, to powinno być trochę lepsze. – iliketocode
Hehe to jest lepsze. Używam także mrocznego schematu, to było po prostu _dark blue_ robi szalone rzeczy w moich oczach;) – MickyD
As był wcześniej wspomniany int
to alias typu System.Int32
. Alias prymitywnych typów jest domyślnie znany jako język C#. Oto lista:
object: System.Object
string: System.String
bool: System.Boolean
byte: System.Byte
sbyte: System.SByte
short: System.Int16
ushort: System.UInt16
int: System.Int32
uint: System.UInt32
long: System.Int64
ulong: System.UInt64
float: System.Single
double: System.Double
decimal: System.Decimal
char: System.Char
Tak, dla tych aliasów, znany również jako typów prostych, nie trzeba określać żadnych nazw.
Innymi słowy, "magia kompilatora". ++ najwięcej odpowiedzi na temat tego pytania. – RubberDuck
Kiedy używasz int, zasadniczo wprowadzasz System.Int32.Ponieważ jest to w pełni kwalifikowana nazwa typu, w rzeczywistości nie potrzebują using System;
Twój program będzie działać, jeśli nie
System.Int32 num = 0;
nawet bez using
Nie spowoduje to błędu kompilacji, jeśli nie używamy systemu; –
@RajeshPawde nie, nie będzie. 'System.Int32' jest w pełni kwalifikowany i nie potrzebuje' using System; ' –
Mój błąd powyżej będzie działał. –
_Even_ jeśli usunąć wszystkie obszary nazw, to będzie praca :) Po prostu podpowiedź, jeśli powiesz 'Int32' zamiast' int', to nie zadziała. –
'int' to * alias * dla' System.Int32' (którego nie możesz używać) –
@ AlexK. Jestem w stanie używać int, mimo że komentuję używając System; –