C# 几种常用的数据类型

 本文讲到 C# 的几种常用的数据类型,统共可以分为两类,值类型引用类型

下面陈列出常用的值类型:

类型 描述 范围 默认值 内置的类型转换方法
bool 布尔值 True 或 False False ToBoolean
char 16位Unicode字符(字符类型) 单个字符   ToChar
datetime  

0001/1/1 00:00:00到

9999/12/31 23:59:59

  ToDateTime
         
float   32 位单精度浮点型   0.0F ToSingle
double   64 位双精度浮点型   0.0D ToDouble
decimal 128 位精确的十进制值,28-29 有效位数   0.0M ToDecimal
         
byte   8 位无符号整数类型 0 到 255 0 ToByte
ushort 16 位无符号整数类型 0 到 65,535 0 ToUInt16
uint 32 位无符号整数类型 0 到 4,294,967,295 0 ToUInt32
ulong 64 位无符号整数类型 0 到 18,446,744,073,709,551,615 0 ToUInt64
         
sbyte   8 位有符号整数类型 -128 到 127 0 ToSByte
short 16 位有符号整数类型 -32,768 到 32,767 0 ToInt16
int 32 位有符号整数类型 -2,147,483,648 到 2,147,483,647 0 ToInt32
long 64 位有符号整数类型

-923,372,036,854,775,808 到

9,223,372,036,854,775,807

0L ToInt64

1. float 和 double 的区别:

float 是单精度类型,精度是 6 位有效数字,占用4个字节的存储空间;

double 是双精度类型,精度是 15 位有效数字,占用8个字节的存储空间;

double 精度和范围都更大,运算时间也就更长。所以能用 float 就不用 double

2. 如果我们在代码中写一个 12.3,编译器会自动认为这个数是个 double 型。所以如果我们想指定 12.3 为 float 类型,那么你必须在数字后面加上 F/f

float f = 12.3F

3.decimal 类型具有更高的精度和更小的范围,适合于财务和货币计算。但 decimal 类型不是 C# 的基础类型,所以使用的时候会对计算时的性能有影响。

 

引用类型有 Object 和 String:

对象类型(Object)是 C# 通用类型系统(Common Type System - CTS)中所有数据类型的终极基类

所以对象类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是,在分配值之前,需要先进行类型转换。

当一个值类型转换为对象类型时,则被称为 装箱;另一方面,当一个对象类型转换为值类型时,则被称为 拆箱

object obj;
obj = 100; // 这是装箱,详细:https://www.cnblogs.com/FoxLibrary/p/13861815.html

C# String 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待,比如:

string str = @"C:\Windows";
等价于:
string str = "C:\\Windows";

@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。

string str = @"<script type=""text/javascript"">
    <!--
    -->
</script>";

 

整数类型转换的区别:

Convert.ToInt32(null) 会返回 0 而不会产生任何异常

int.Parse(null) 则会产生异常。int.Parse("4.5") ,直接报错:"输入字符串的格式不正确";

int.TryParse() 其实是对 int.Parse() 做了一个异常处理,如果出现异常则返回 false,并且将输出参数返回 0。

Convert.ToInt32(double value) 如果 value 为浮点型,采用四舍五入

int(4.6) = 4,int 转化其他数值类型为 int 时没有四舍五入,强制转换(截取整数部分。

//这里用null和double类型数据来测试
int b; double m = 1.232d;  
bool rlt1 = int.TryParse(null, out b);  //结果:b返回为0,rlt1为false
bool rlt2 = int.TryParse(m, out b);  //结果:b返回为0,rlt2为false

 

参考学习:

C# 数据类型

C#中(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别

posted @ 2021-04-09 15:46  kueizheng  阅读(1939)  评论(0编辑  收藏  举报