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>";

 C#的类型转换:

  • 隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。
  • 显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失

string转char:

string str = "abcde";

char chr = str[2]; //结果为b

注:char用单引号 '男',string用双引号 "周杰"。

整数类型转换的区别:

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

位(bit)、字节(byte)、字符之间的关系:

bit就是位,是表示信息的最小单位,只有两种状态:0 和 1;

byte就是字节,1 byte = 8 bit;

1 字符 = 2 字节,一般来说,一个汉字就是一个字符,一个字母或数字就是一个字节。

注:1KB = 1024 B,这里的B就是字节……

参考文档:http://www.runoob.com/csharp/csharp-data-types.html

          https://www.cnblogs.com/leolis/p/3968943.html

原文地址:https://www.cnblogs.com/Allofus/p/10215420.html