J'ai lu que toutes les primitives tombent sous l'espace de noms System
. Si je commente using System
, je m'attendrais à ce qu'il y ait une erreur de construction dans mon programme. Cependant, il fonctionne avec succès. Pourquoi est-ce?Pourquoi les types de données primitifs fonctionnent-ils sans inclure l'espace de noms System?
Répondre
C'est parce que int
est un alias pour System.Int32
, et depuis le « Int32 » est déjà préfixé avec son espace de noms (par exemple. « Qualifié »), la syntaxe est légale sans avoir à spécifier using System;
au haut de votre code.
L'extrait MSDN décrit cette application concept-
La plupart C# commencent par une section de l'utilisation des directives. Cette section répertorie les espaces de noms que l'application utilisera fréquemment, et évite au programmeur de spécifier un nom qualifié complet chaque fois qu'une méthode contenue dans est utilisée. Pour exemple, en incluant la ligne:
using System;
Au début d'un programme, le programmeur peut utiliser le code:
Console.WriteLine("Hello, World!");
Au lieu de:
System.Console.WriteLine("Hello, World!");
System.Int32
(aka "int") serait le dernier. Voici un exemple dans le code -
//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"
}
}
}
Depuis la ligne 11 n'est pas qualifié/aliasing un type complet, using System;
aurait besoin d'être décommentées pour l'erreur d'aller loin.
D'autres mentions-
Built-In Types Table (C# Reference) (Liste tous les types intégrés et leurs équivalents framework .NET)
Soit le gamma de mon moniteur est éteint ou votre vision est celle d'une abeille;) (schéma de couleurs) – MickyD
Oui .. Je code habituellement sur un fond noir. Juste changé les couleurs en blanc, cela devrait être un peu mieux. – iliketocode
Hehe c'est mieux. J'utilise le schéma sombre aussi, il était juste _dark blue_ fait des trucs fous à mes yeux;) – MickyD
Comme était mentionné avant int
est un alias de type System.Int32
. L'alias des types primitifs est implicitement connu par le langage C#. Voici la liste:
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
Ainsi, pour ces alias, également connu sous le nom types simples, vous n'avez pas besoin de spécifier un espace de noms.
En d'autres termes, "magic compilateur". ++ le plus sur le sujet répond sur ce Q. – RubberDuck
Lorsque vous utilisez int, vous mettez fondamentalement System.Int32.Étant donné que c'est le nom complet du type, vous ne fait pas besoin using System;
Votre programme fonctionnerait si vous avez
System.Int32 num = 0;
même sans using
Non cela va augmenter l'erreur de compilation si nous n'utilisons pas le système using; –
@RajeshPawde non ce ne sera pas. 'System.Int32' est entièrement qualifié et n'a pas besoin de' using System; ' –
Mon erreur ci-dessus va fonctionner. –
_Even_ si vous supprimez tous les espaces de noms, il sera travail :) Juste un indice, si vous dites 'Int32' au lieu de' int', cela ne fonctionnera pas. –
'int' est un * alias * pour' System.Int32' (que vous ne seriez pas capable d'utiliser) –
@ AlexK.Je suis capable d'utiliser int même si je commente en utilisant System; –