C # Fundamentos de la Serie - 1 Tipo de datos

Tipos de datos comunes

C # tipo se divide generalmente en tipos de valores , tipos de referencia son dos tipos.
Ejemplos del tipo del valor almacenado en la pila, el tipo de referencia coloca un puntero a una pila en un contenido de la pila.
C # es que construimos para nuestro uso de varios tipos de datos:

Palabras clave abreviada Correspondiente clase de nombre completo (Haga clic para ver la API correspondiente) rango de valores explicación
bool System.Boolean verdadero Falso 该类型只有两个值,用作判断,表示“是”、“否”
sbyte System.SByte -128 ~ 127 (-2 7 ~ 2 7 -1) 该类型在内存中使用8个bit进行存储,而且带有符号。
根据最高位作符号位,所以sbyte实际表示范围为 -128~127
byte System.Byte 0 ~ 2 8 -1 8位的无符号bit
corto System.Int16 -2 15 ~ 2 15 -1 short表示一个16位的短整形,其具体的值为-32768~32767
ushort System.UInt16 0 ~ 2 16 -1 ushort表示无符号16位的短整型,具体的范围为0~65535
En t System.Int32 -2 15 ~ 2 15 -1 int是我们常用的一个数据类型,它的数据范围为: -2,147,483,648~ 2,147,483,647 。
可以看到,是-2亿到2亿,基本满足了数据需要。
uint System.UInt32 0 ~ 2 32 -1 uint 无符号整形,最大值比 int大一倍左右,但是没有负数。
如果在计算中能保证没有负值,可以使用。
并不推荐,因为在做减法的时候,更、容易溢出
largo System.Int64 -2 16 ~ 2 16 -1 实际取值为-9,223,372,036,854,775,808~ 9,223,372,036,854,775,807 。
long在内存中比int占用更多字节,长度为int的两倍。
所以能表达更多的数剧。在数据库中,经常被用来做大数据表的主键。
ulong System.UInt64 0 ~ 2 64 -1 64位无符号长整形,理同其他的无符号整形,在正整数中比long表达更多的数据。
carbonizarse System.Char utf-16 在.net 中char 表示 utf-16的编码单位,所以绝大多数的字符都可以用char表示,包括中文汉字。
flotador System.Single -3.402823e38 ~ 3.402823e38 32位的单精度浮点型,也就是通常说的带小数点的数
doble System.Double 64位双精度浮点型,比float能表示更多的小数位。
实际取值-1.79769313486232e308~1.79769313486232e308
decimal System.Decimal 128位高精度浮点值。
常用于不能四舍五入,或者对小数点后数字要求很敏感的地方。
在128位中,一位是符号位(表示正负),96位是值本身(N),8位是比例因子(k)。
所以decimal实际值应该是± NX10 k,其中-28≤k≤0.其余位暂时没有使用
cuerda System.String - 字符串变量,表示一组字符数组。字符串是不可变量。即字符串不能修改,任何针对字符串的修改都会生成一个新的字符串。

Los otros dos tipos especiales: dynamic object.
Que incluyendo tipo dinámico, que está en C # 4.0 comenzando con el apoyo dynamicde palabras clave para declarar el nombre de la variable es una variable dinámica. En referencia al uso específico de Python, el lenguaje dinámico como Js. Pero la dynamicdeclaración de variables no permite añadir atributos, pero esto no es del todo absoluta, puede referirse a una parte dinámica posterior de este capítulo será presentado.

object Todos los tipos de clases para padres, clases de C # son todas las subclases del objeto. Sin embargo, la matriz directa descrito en la tabla anterior es ValueType (un valor que indica el tipo), pero todavía es ValueType objeto padre.

Nota:
para el flotador y almacenamiento de datos doble problemas debido a la forma, hay un problema: Para valores de 0 o cerca de 0 no puede ser expresado así. Debido a las variables de flotador representados en la memoria como un medio n- , por lo que habrá un +0 y -0 dos valores. Cuando un fallo de punto flotante no es igual a 0 que puede ser juzgado normal. Pero cuando se trata de los resultados de las operaciones matemáticas se compara a cero, entonces no habrá problemas, tales como 0.1+0.2 != 0.3el predicado Shi true. Por lo tanto, el enfoque estándar debe ser determinado Math.Abs(0.1+0.2 - 0.3)< ?de esta manera, ¿dónde? Representa un intervalo de error aceptable del sistema.
La precisión decimal en este sentido sería mucho mayor que el doble y el flotador. No parece por lo menos 0,1 + 0,2! = 0,3 este problema. Así decimal generalmente se utiliza en el cálculo de la cantidad de estos lugares.

tipo de conversión

Se refiere a un tipo de conversión de tipo numérico se convierte en otro tipo por algún medio.
Conversiones de tipos dividen en dos formas: la conversión del tipo de defecto , fundido .

Las conversiones de tipos por defecto

Se activará la conversión de tipos por defecto en las siguientes situaciones:

  • Cuando una subclase quieren convertir su matriz,
  • Cuando la precisión precisión de la conversión corto.
    Tales como: Byte -> Int -> largo -> float -> doble
    referencia:
int i = 1;
double d = i;
float f = i;
d = f;
uint ui = 1;
long l = ui;
d = l;
f = l;
            

Aquí hay algunos lugares que requieren una atención especial:

  • El mismo número de bits entre la conversión entre unsigned y firmado, si el número de bits sin firmar y firmada por defecto si no convertido.
  • Todo número entero decimal se puede convertir en defecto decimal, es decir, excepto double, floatexcepto para todos los tipos numéricos son posibles.

moldeada

Analizando Tipo de datos is:

C # construyó una palabra clave se utiliza para determinar si una variable es un tipo

class A
{
}
class B : A
{
}
class C : A
{
}
class Program
{
	static void Main()
    {
    	B b = new B();
        A a = b;
        // 这时候 a 是一个 假装自己是A的B的引用
        Console.WriteLine("a is B ? {0}", a is B); // 结果: true
        Console.WriteLine("a is A ? {0}", a is A); // true
        Console.WriteLine("a is C ? {0}", a is C); // false
    }
}

Así que is¿para qué sirve? Antes de fundición detectar si se puede convertir en el tipo de destino, si se desea convertir el valor de retorno es todavía falsa, entonces el error.

moldeada

Cast dividido en dos tipos:

  1. Antes de añadir los moldes Variable objetivo, este método con C / C ++, Java manera consistente, en particular:
    C c1 = (C)a;// 代码接上
    
  2. Uso asde palabras clave asrepresenta la variable x como tipo Y
    C c2 = a as C;// 代码接上
    

La diferencia entre los dos enfoques:

  1. Cuando la transformación no generará un error, el código de terminación directa

  2. Cuando la transformación no c2 se establece en NULL. El paso actual no lanza una excepción si no se trata de una referencia nula, entonces se siguen lanzado vacío citado.

Tipo Tipo de valor de conversión

Antes mencionamos los contenidos de pequeño a grande exactitud de la precisión se pueden convertir por defecto. Pero nos encontraremos convertida en cada caso en el curso de su uso normal, entonces esta vez vamos a usar la conversión, esta vez para nosotros a la pérdida de precisión es aceptable.
métodos de conversión comunes son:

  1. Ejemplo de uso de declaraciones de tipo a la fuerza: long lval = 100; int i = (int)lval;
  2. System.Convert clase de uso. Uso Convert.ToXXX(), que XXXrepresenta la transformación del objeto de destino.
//Convert 示例代码
long lval = 19293;
var i = Convert.ToInt32(lval);
double d = 10.091;
var dc = Convert.ToDecimal(d);
var dt = Convert.ToDateTime("2019-03-30");

Vale la pena destacar: Convertla ToXXX donde XXX es el uso de C # nombre del tipo, en lugar de palabras clave. ConvertEs una clase muy útil, esta clase se utilizan una gran cantidad de valor de conversión de tipo en nuestro trabajo de desarrollo.
Por supuesto, les vamos a seguir introducción más en profundidad.

Ver más contenido de mi blog o
archivo

Supongo que te gusta

Origin www.cnblogs.com/c7jie/p/12551292.html
Recomendado
Clasificación