c# - ejemplos - tipos de datos en programacion pdf
¿Por qué funcionan los tipos de datos primitivos sin incluir el espacio de nombres del Sistema? (3)
Leí que todas las primitivas caen bajo el espacio de nombres del System
. Si hago un comentario using System
, esperaría que haya un error de compilación en mi programa. Sin embargo, se está ejecutando con éxito. ¿Por qué es esto?
Como se mencionó antes, int
es un alias de tipo System.Int32
. El alias de los tipos primitivos se conoce implícitamente por el lenguaje C #. Aquí está la 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
Por lo tanto, para estos alias, también conocidos como tipos simples , no necesita especificar ningún espacio de nombres.
Cuando usas int, básicamente estás poniendo en System.Int32. Dado que este es el nombre de tipo completamente calificado, en realidad no necesita using System;
Tu programa funcionaria si lo hicieras
System.Int32 num = 0;
incluso sin el using
Esto se debe a que int
es un alias para System.Int32
, y como el "Int32" ya tiene un prefijo con su espacio de nombres (es decir, "completamente calificado"), la sintaxis es legal sin tener que especificar el using System;
en la parte superior de su código.
El siguiente fragmento de MSDN describe este concepto:
La mayoría de las aplicaciones de C # comienzan con una sección de uso de directivas. Esta sección enumera los espacios de nombres que la aplicación utilizará con frecuencia, y evita que el programador especifique un nombre completo cada vez que se use un método que esté contenido dentro. Por ejemplo, al incluir la línea:
using System;
Al inicio de un programa, el programador puede usar el código:
Console.WriteLine("Hello, World!");
En lugar de:
System.Console.WriteLine("Hello, World!");
System.Int32
(también conocido como "int") sería el último. Aquí hay un ejemplo de esto en código:
//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"
}
}
}
Dado que la línea 11 no está completamente calificada / aliasing un tipo totalmente calificado, using System;
tendría que ser comentado para que el error desaparezca.
Referencias adicionales
Tabla de tipos incorporados (referencia de C #) (Enumera todos los tipos incorporados y sus equivalentes de .NET framework)