C# 数据类型相关

分类

按照数据复杂程度

按照数据存储


 

类型转换

隐式转换

隐式转换无法完成由精度高的数据类型向精度低的数据类型转换

显式转换

又称为强制类型转换,显示转换不一定总是成功,且转换过程中可能出现数据丢失

 int num = 666;
 float result = (float)num;

Parse

一般用来(字符串)=>(数字)

可以将特定格式的字符串转换成指定类型的数据,一般用来转换成数值

如果字符串的格式无效,转换失败,Parse会引发异常

int.Parse(str);

try
{
    char.Parse(str);
}
catch (Exception ex) 
{ 
   Console.WriteLine("转换格式失败!");
}

TryParse

一般用来(字符串)=>(数字)

类似Parse方法,转换成功返回true,并以out参数的形式返回转换后的数字;转换失败返回false,不会引发异常。

  Console.WriteLine($"{int.TryParse(str, out int value)} {value}");
  Console.WriteLine($"{char.TryParse(str, out char valueStr)} {valueStr}");

Convert

一般用来(字符串)=>(数字)

如果字符串的格式无效,转换失败,Parse会引发异常.在其内部调用的是Parse方法

下表列出了 Convert 类中可用于将字符串转换为数字的一些方法。

数值类型

方法

decimal

ToDecimal(String)

float

ToSingle(String)

double

ToDouble(String)

short

ToInt16(String)

int

ToInt32(String)

long

ToInt64(String)

ushort

ToUInt16(String)

uint

ToUInt32(String)

ulong

ToUInt64(String)

  Convert.ToInt32(str);
  try
  {
      Convert.ToChar(str);
  }
  catch(Exception ex) 
  {
      Console.WriteLine("转换格式失败!");
  }

ToString

一般用来(数字)=>(字符串)

也可用来实现保留小数点后几位的功能

is和as

is

用来判断对象是否和指定类型兼容

如果兼容返回true;不兼容返回false,通常is会使用在if语句中

Apple apple = new Apple();//子类
Fruit fruit = new Fruit();//父类  

if (apple is Fruit)
{
    Console.WriteLine("兼容");
}
else
{
    Console.WriteLine("不兼容");
}

as

在判断兼容性的同时,进行类型转换

如果兼容的,则返回类型转换后的对象,如果不兼容则返回null

Apple apple = new Apple();//子类
Fruit fruit = new Fruit();//父类  
var obj = apple as Fruit;
Console.WriteLine(obj == null);

子类可以兼容父类(子类可以替代父类)

父类不可以兼容子类(父类不能替代子类)

值类型补充

整数类型

类型

描述

范围

默认值

sbyte

一个字节的有符号整数

-128 到 127

0

byte

一个字节的无符号整数

0 到 255

0

short

两个字节的有符号整数

-32,768 到 32,767

0

ushort

两个字节的无符号整数

0 到 65,535

0

int

四个字节的有符号整数

-2,147,483,648 到 2,147,483,647

0

uint

四个字节的无符号整数

0 到 4,294,967,295

0

long

八个字节的有符号整数

-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807

0L

ulong

八个字节的无符号整数

0 到 18,446,744,073,709,551,615

0

实数类型

包括浮点型和小数型,小数型取值范围比浮点型小,但精度更高

类型

描述

范围

默认值

float

32 位单精度浮点型 ,占用4个字节

-3.4 x 1038 到 + 3.4 x 1038

0.0F

double

64 位双精度浮点型,占用8个字节

(+/-)5.0 x 10-324 到 (+/-)1.7 x 10308

0.0D

decimal

128 位精确的十进制值,28-29 有效位数,更高精度,占用12个字节

(-7.9 x 1028 到 7.9 x 1028) / 100 到 28

0.0M

引用类型补充

 引用类型还包含集合

其他

如需得到一个类型或一个变量在特定平台上的准确尺寸,可以使用 sizeof 方法。

sizeof(int)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值