C# 类型  | 
  | .NET Framework 类型  | 
bool  | 
  | System.Boolean  | 
byte  | 
  | System.Byte  | 
sbyte  | 
  | System.SByte  | 
char  | 
  | System.Char  | 
decimal  | 
  | System.Decimal  | 
double  | 
  | System.Double  | 
float  | 
  | System.Single  | 
int  | 
  | System.Int32  | 
uint  | 
  | System.UInt32  | 
long  | 
  | System.Int64  | 
ulong  | 
  | System.UInt64  | 
object  | 
  | System.Object  | 
short  | 
  | System.Int16  | 
ushort  | 
  | System.UInt16  | 
string  | 
  | System.String  | 
请记住:在 C# 中不允许使用未初始化的变量。
值类型  | 默认值  | 
bool  | false  | 
byte  | 0  | 
char  | '\0'  | 
decimal  | 0.0M  | 
double  | 0.0D  | 
enum  | 表达式 (E)0 产生的值,其中 E 为 enum 标识符。  | 
float  | 0.0F  | 
int  | 0  | 
long  | 0L  | 
sbyte  | 0  | 
short  | 0  | 
struct  | 将所有的值类型字段设置为默认值并将所有的引用类型字段设置为 null 时产生的值。  | 
uint  | 0  | 
ulong  | 0  | 
ushort  | 0  | 
下表显示了整型的大小和范围,这些类型构成了简单类型的一个子集。
类型  | 范围  | 大小  | 
sbyte  | -128 到 127  | 有符号 8 位整数  | 
byte  | 0 到 255  | 无符号 8 位整数  | 
char  | U+0000 到 U+ffff  | 16 位 Unicode 字符  | 
short  | -32,768 到 32,767  | 有符号 16 位整数  | 
ushort  | 0 到 65,535  | 无符号 16 位整数  | 
int  | -2,147,483,648 到 2,147,483,647  | 有符号 32 位整数  | 
uint  | 0 到 4,294,967,295  | 无符号 32 位整数  | 
long  | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807  | 有符号 64 位整数  | 
ulong  | 0 到 18,446,744,073,709,551,615  | 无符号 64 位整数  | 
如果整数表示的值超出了 ulong 的范围,将产生编译错误。
浮点型表(C# 参考)
下表显示了浮点型的精度和大致范围。
类型  | 大致范围  | 精度  | 
float  | ±1.5e−45 到 ±3.4e38  | 7 位  | 
double  | ±5.0e−324 到 ±1.7e308  | 15 到 16 位  | 
隐式数值转换表(C# 参考)
下表显示了预定义的隐式数值转换。隐式转换可能在多种情形下发生,包括调用方法时和在赋值语句中。
从  | 到  | 
sbyte  | short、int、long、float、double 或decimal  | 
byte  | short、ushort、int、uint、long、ulong、float、double 或decimal  | 
short  | int、long、float、double 或decimal  | 
ushort  | int、uint、long、ulong、float、double 或decimal  | 
int  | long、float、double 或decimal  | 
uint  | long、ulong、float、double 或decimal  | 
long  | float、double 或decimal  | 
char  | ushort、int、 uint、 long、ulong、 float、double 或decimal  | 
float  | double  | 
ulong  | float、 double 或decimal  | 
<!--[if !vml]--><!--[endif]--> 备注
- 从int、uint 或long 到float 的转换以及从long 到double 的转换的精度可能会降低,但数值大小不受影响。
 - 不存在到char 类型的隐式转换。
 - 不存在浮点型与decimal 类型之间的隐式转换。
 - int 类型的常数表达式可转换为sbyte、byte、short、ushort、uint 或ulong,前提是常数表达式的值处于目标类型的范围之内。
 
显式数值转换表(C# 参考)
显式数值转换用于通过显式转换表达式,将任何数字类型转换为任何其他数字类型。对于它不存在隐式转换。下表显示了这些转换。
从  | 到  | 
sbyte  | byte、ushort、uint、ulong 或char  | 
byte  | Sbyte 或者char  | 
short  | sbyte、 byte、 ushort、 uint、 ulong 或char  | 
ushort  | sbyte、 byte、 short 或char  | 
int  | sbyte、byte、 short、 ushort、 uint、 ulong 或char  | 
uint  | sbyte、byte、 short、 ushort、 int 或char  | 
long  | sbyte、 byte、 short、 ushort、 int、 uint、 ulong 或char  | 
ulong  | sbyte、 byte、 short、 ushort、 int、 uint、 long 或char  | 
char  | sbyte、byte 或short  | 
float  | sbyte、 byte、 short、 ushort int、 uint、 long、 ulong、 char 或decimal  | 
double  | sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、 float 或decimal  | 
decimal  | sbyte、 byte、 short、 ushort、 int、 uint、 long、 ulong、 char、 float 或double  | 
备注
- 显式数值转换可能导致精度损失或引发异常。
 - 将decimal 值转换为整型时,该值将舍入为与零最接近的整数值。如果结果整数值超出目标类型的范围,则会引发OverflowException。
 - 将double 或float 值转换为整型时,值会被截断。如果该结果整数值超出了目标值的范围,其结果将取决于溢出检查上下文。在 checked 上下文中,将引发OverflowException;而在 unchecked 上下文中,结果将是一个未指定的目标类型的值。
 - 将double 转换为float 时,double 值将舍入为最接近的float 值。如果double 值因过小或过大而使目标类型无法容纳它,则结果将为零或无穷大。
 - 将float 或double 转换为decimal 时,源值将转换为decimal 表示形式,并舍入为第 28 个小数位之后最接近的数(如果需要)。根据源值的不同,可能产生以下结果:
 
- 如果源值因过小而无法表示为decimal,那么结果将为零。
 - 如果源值为 NaN(非数字值)、无穷大或因过大而无法表示为decimal,则会引发OverflowException。
 
- 将decimal 转换为float 或double 时,decimal 值将舍入为最接近的double 或float 值。
 
    
    










