新浦京81707con > 功能介绍 > 之类型转换

原标题:之类型转换

浏览次数:150 时间:2019-11-07

C# 之类型调换,

大器晚成、常用类型概述:

bool -> System.Boolean (布尔型,其值为 true 或者 false)
char -> System.Char (字符型,占领多少个字节,表示 1 个 Unicode 字符)
byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)
sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)
ushort -> System.UInt16 (无符号短整型,占 2 字节,表示 十五个人正整数,范围 0 ~ 65,535)
uint -> System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295)
ulong -> System.UInt64 (无符号长整型,占 8 字节,表示 陆10个人正整数,范围 0 ~ 大约 10 的 20 次方)
short -> System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)
int -> System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647)
long -> System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大概-(10 的 19) 次方 到 10 的 19 次方)
float -> System.Single (单精度浮点型,占 4 个字节)
double -> System.Double (双精度浮点型,占 8 个字节)

值类型和援用类型批注请看另黄金年代篇

二、显式调换与隐式转变:

隐式转换:隐式转变没有必要在代码中钦点调换类型;如:

int intNumber = 10; 
double doubleNumber = intNumber;  
long a = intNumber; //隐

显式调换:显式转变则相反,要求钦赐转变类型;如:

double doubleNumber1 = 10.1;  
int intNumber1 = (int)doubleNumber1; //显

对此代表数值的主导数据类型来讲,数值范围小的数据类型调换到数值范围大的数据类型能够扩充隐式转变,而扭曲则必需举办显示调换。就疑似下面的多个例证同样。 对于类类型来讲,子类调换来父类可以张开隐式调换,而扭曲则必需开展显式转换,举例:string str1 = "abc";object obj = str1;  //子类转产生父类,隐式转变string str2 = (string)obj;  //父类转变到子类,显式转变 假使八个类之间未有继续关系,则不能够拓宽隐式调换或显式调换,那时必须在被改换的类中定义三个隐式转变方法或显式转变方法。

显式转变必要是同类型的,正是说三种数据类型必得合作,隐式转变是前进转型(十一分是子类转父类),而挟持类型调换则是向下转型(万分是父类转子类),就贴近Double型的能够饱含int型一样。而挟持调换能够是还是不是相通种类型,(仿佛class1与class2同级其余类同样卡塔尔,两都举行内容上的深入分析。Convert.ToInt32与int.Parse都是挟持调换,int.Parse是更改String为int(这种情况多多,大概展开了些优化,也大概只是为着便于,管理逻辑同样), 而Convert.ToInt32是退换继承自Object的靶子为int的(18种重载). 比方二个object对象,你想把它转变为int,用int.Parse就不得以,要用Convert.ToInt32。

三、装箱与拆箱:

装箱:将值类型转变来援引类型。

拆箱:将援用类型调换为值类型。

四、IS与AS:

1、使用境况:

  强制类型调换,有希望会造成万分。is与as正是为着解决那黄金年代标题,is与as长久不会抛出相当。

2、is判定多个目的是或不是同盟于钦赐的花色,思虑里氏代换。Dog是Animal,而Animal不是Dog。

3、as 与强制类型转变一样,差别是选取as是安全的。使用as假诺转变退步,重回Null,不会抛出十分。

4、使用is和as能够替代强制类型转变,分别如下: 

a、IS只是做类型兼容判断,并不执行真正的类型转换。返回true或false,不会返回null,对象为null也会返回false。is操作符永远不会抛出异常。
  if(a is Dog)
  {
    Dog d = (Dog)a;
    ...
      boolean b1=(obj is Object); //b1 为true
  }

b、AS操作符类似于强制转换,但又有区别,当对象为null时,不会抛异常而是会返回null。
  Dog d = a as Dog;
  if(d!=null)
  {
    ...
      Class1 b = o as Class1; // b = null
 }

专心:二者功能等同,可是效用差异超级大,使用is会检查三次对象的花色,一回是核算,三遍是恐吓转换。使用as只举行了一回对象类型的反省。检核对象的类别,是个开支资源的操作,首先要判定指标的实际类型,然后必需遍历继承树结构(档期的顺序结构卡塔 尔(英语:State of Qatar),去与各种基类核查。

 

之类型调换, 大器晚成、常用类型概述: bool - System.Boolean (布尔型,其值为 true 或许 false) char - System.Char (字符型,据有多少个字节,表示 1 个...

本文由新浦京81707con发布于功能介绍,转载请注明出处:之类型转换

关键词: 新浦京81707con

上一篇:RHEL6配置双网卡bonding及桥接,端口绑定

下一篇:没有了