浅析C#数据类型转换的几种形式

1、Convert.ToInt32(); //转换成32位的整数。
2、变量.ToString();/最常见的转换成 字符串。
3、"订单"+2514 //后面的数字会转换为字符串。
4、((类名A)对象名X) //强行将 对象X 转换成 A类 的对象。
5、int.Parse(string);把字符串型转换成其他类型。
6、还有,如果要转换成的类型为引用类型,还可以用 as
teacher tea = teahcer();
如 student stu = tea as student;
 
(1) 隐式转换:一般是低类型向高类型转化,能够保证值不发生变化。
隐式数值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。
从 ulong 到 float、double 或 decimal。
从 char 到 ushort、int、uint、long、ulong、float、double 或 decimal。
从 float 到 double。
不存在向 char 类型的隐式转换,因此其它整型的值不会自动转换为 char 类型。
浮点型不能隐式地转化为decimal型
隐式枚举转换
隐式枚举转换允许将十进制整数 0 转换为任何枚举类型。
隐式引用转换
派生类向基类转换
隐式引用转换是指一类引用类型之间的转换,这种转换总是可以成功,因此不需要在运行时进行任何检查。
装箱转换
装箱转换允许将值类型隐式转换为引用类型。

(2) 显示转换:也称强制类型转换。不能保证数据的正确性。
(type)(表达式)

(3) 用户自定义C#数据类型转换
所有的用户自定义转换都是静态的,要使用static关键字
用户自定义转换分显示和隐示,它们用implicit(隐式转换)或 explicit(显示转换)关键字声明。
static 访问修辞符 转换修辞符 operator 转换类型(参数)
C#数据类型转换示例:


代码如下:

struct Number
{
 private int value;
 public Number(int value) { this.value=value; }
 //用户自定义整型到Number型的隐式转换
 static public implicit operator Number(int value) { return new Number(value); }
 //用户自定义从Number型到整型的显示转换
 static public explicit operator int(Number n) { return n.value; }
 //用户自定义从Number类型到string类型的隐式转换
 static public implicit operator string(Number n) { return n.ToString(); }

class Test
{
 static public void Main()
 {
  Number n;
  n=10;
  Console.WriteLine((int)n);
  //隐式转换到string
  Console.WriteLine(n);
 }
}

使用System.Convert类
将一个基本数据类型转换为另一个基本数据类型。
使用Parse方法
大部份预定义值类型都有这个静态方法,用来将相应的文本转化为相应的值类型。

装箱和取消装箱
装箱和取消装箱使值类型能够与 object 类型相互转换。
装箱转换允许将“值类型”隐式转换为“引用类型”。将“值类型”的值装箱的操作包括:分配一个对象实例并将“值类型”的值复制到该实例中。

C#数据类型转换示例:
此例将整数变量 i 通过装箱转换为对象 o。此例显示对象保留了内容的原始副本,即 123。


代码如下:

public static void Main()
{
 int i=123;
 object o=i;//隐式的装箱
 i=456;//改变变量i的值
 Console.WriteLine("Thevalue-typevalue={0}",i);//456
 Console.WriteLine("Theobject-typevalue={0}",o);//123是i的复制值
}

取消装箱转换:取消装箱转换允许将引用类型显式转换为值类型。
取消装箱操作包括以下两个步骤:首先检查该对象实例是否是某个给定的值类型的装了箱的值,然后将值从实例中复制出来。
C#数据类型转换示例:
下面的示例阐释无效取消装箱的情况,即错误的取消装箱如何导致 InvalidCastException。通过使用 try 和 catch,发生错误时会显示错误信息。


代码如下:

public class UnboxingTest
{
 public static void Main()
 {
  int intI=123;
  object o=intI;//装箱
  try
  { //取消装箱无效,short不是装了箱的值类型.检查该对象实例是否是某个给定的值类型的装了箱的值
   int intJ=(short)o;
   Console.WriteLine("UnboxingOK.");
  }
  catch(InvalidCastException e)
  {
   Console.WriteLine("{0}Error:Incorrectunboxing.",e);
  }
 }
}

其它转换用运算符
as
as 运算符用于执行引用类型的显式类型转换。 如果要转换的类型与指定类型兼容,转换就会成功;如果类型不兼容,则返回null。
表达式as 类型
as 运算符类似于类型转换,所不同的是,当转换失败时,as 运算符将返回null,而不是引发异常。
示例:


代码如下:

object o1=”SomeString”;
object o2=5;
string s1=o1 as string;//类型兼容s1=”SomeString”
string s2=o2 as string;//s2=null

is
is 运算符用于检查对象的类型是否与给定类型兼容(对象是该类型,或是派生于该类型)。
表达式 is 类型
示例:


代码如下:

int i=10;
if(iisobject)//true
{}

sizeof
sizeof 运算符用于获得值类型的大小(以字节为单位)。
sizeof(type)
sizeof 运算符仅适用于值类型,而不适用于引用类型。
sizeof 运算符仅可用于 unsafe 模式。
示例:


代码如下:

unsafe
{
 Console.WriteLine(“{0}”,sizeof(int));
}

(0)

相关推荐

  • C#中使用强制类型实现字符串和ASCII码之间的转换

    C#貌似没有专门用于ASCII码转字符或字符转ASCII码的系统函数,所以小编这里就借用一下强制类型转换来实现ASCII码与字符之间的互转. 所谓的ASCII码,即American Standard Code for Information Interchange,美国信息互换标准代码的简写,它是基于拉丁字母的编码系统,也是当前最为通用的单字节编码系统.本文讲述在C#中如何实现字母或 数字等字符如何转换为ASCII编码,同时也可以将ASCII编码转换为字符. 一.将字符转换为ASCII码(数字)

  • C#、.Net中把字符串(String)格式转换为DateTime类型的三种方法

    方式一:Convert.ToDateTime(string) 复制代码 代码如下: Convert.ToDateTime(string) 注意:string格式有要求,必须是yyyy-MM-dd hh:mm:ss 方式二:Convert.ToDateTime(string, IFormatProvider) 复制代码 代码如下: DateTimeFormatInfo dtFormat = new System.GlobalizationDateTimeFormatInfo(); dtFormat

  • C#基础之数据类型转换

    int x; long y = 123456789101112; x = (int)y; Console.WriteLine(x); 输出结果: 我们知道long类型的取值范围是-9223372036854775805~+9223372036854775807:int类型的是:-2147483648~+2147483647 上面的代码中,由于long变量的值超过了int能容纳的最大值,造成了数据的丢失:像这样有可能造成数据丢失或引发异常的任何转换都需要执行显式转换(explicit); 相反的就

  • C# char类型字符转换大小写的实现代码

    C# char类型有自带的大小写转换方法:ToUpper和ToLowerchar str1 = 'a';char str2 = 'A';Char.ToUpper(str1); Char.ToLower(str2);

  • C#强制类型转换小结

    1.任何一门编程语言均有相关数据类型.C#也不例外,其基本数据类型有int,short,long,float,double,string等.数据类型之间可以相互转换.不过转换过程要注意小类型能转换成大类型,但大类型一般不能转换成小类型.如int型可以转换成float型,但float型不一定可以转换成int型,至少这在C,C++是这样,但在C#中明显有了改变,似乎微软公司也允许这样的形式存在了.例如: double dbl_num=12345678910.456; int k = (int) db

  • C#自定义类型强制转换实例分析

    本文实例讲述了C#自定义类型强制转换的用法.分享给大家供大家参考.具体分析如下: 先来举一个小例子 类定义: public class MyCurrency { public uint Dollars; public ushort Cents; public MyCurrency(uint dollars, ushort cents) { this.Dollars = dollars; this.Cents = cents; } public override string ToString()

  • 浅析C#数据类型转换的几种形式

    1.Convert.ToInt32(); //转换成32位的整数.2.变量.ToString();/最常见的转换成 字符串.3."订单"+2514 //后面的数字会转换为字符串.4.((类名A)对象名X) //强行将 对象X 转换成 A类 的对象.5.int.Parse(string);把字符串型转换成其他类型.6.还有,如果要转换成的类型为引用类型,还可以用 as teacher tea = teahcer();如 student stu = tea as student; (1)

  • PHP中数据类型转换的三种方式

    PHP的数据类型转换属于强制转换,允许转换的PHP数据类型有: 1.(int).(integer):转换成整形 2.(float).(double).(real):转换成浮点型 3.(string):转换成字符串 4.(bool).(boolean):转换成布尔类型 5.(array):转换成数组 6.(object):转换成对象 PHP数据类型有三种转换方式: 1.在要转换的变量之前加上用括号括起来的目标类型 2.使用3个具体类型的转换函数,intval().floatval().strval

  • 浅析php数据类型转换

    PHP 在变量定义中不需要(或不支持)明确的类型定义:变量类型是根据使用该变量的上下文所决定的.也就是说,如果把一个字符串值赋给变量 var,var 就成了一个字符串.如果又把一个整型值赋给 var,那它就成了一个整数. PHP 的自动类型转换的一个例子是加号"+".如果任何一个操作数是浮点数,则所有的操作数都被当成浮点数,结果也是浮点数.否则操作数会被解释为整数,结果也是整数.注意这并没有改变这些操作数本身的类型:改变的仅是这些操作数如何被求值以及表达式本身的类型. 类型强制转换允许

  • Python数据类型转换详解

    目录 1. Python的数据类型 2. Python数据类型转换 2.1 自动类型转换 2.2 强制类型转换 2.2.1 其他转字符串 2.2.2 其他转数字类型 2.2.3 其他转列表类型 2.2.4 其他转元组类型 2.2.5 其他转集合类型 2.2.6 其他转字典类型 总结 1. Python的数据类型 上一遍博文已经详细地介绍了Python的数据类型,详见链接Python的变量命名及数据类型. 在这里总结一下Python的数据类型: 字符串类型 String 数字类型 Number:

  • 浅析Java中对象的创建与对象的数据类型转换

    Java:对象创建和初始化过程 1.Java中的数据类型     Java中有3个数据类型:基本数据类型(在Java中,boolean.byte.short.int.long.char.float.double这八种是基本数据类型).引用类型和null类型.其中,引用类型包括类类型(含数组).接口类型.     下列语句声明了一些变量: int k ; A a; //a是A数据类型的对象变量名. B b1,b2,-,b10000;// 假定B是抽象类或接口. String s; 注意:从数据类型

  • ASP.NET中MVC传递数据的几种形式总结

    本文实例讲述了ASP.NET中MVC传递数据的几种形式.分享给大家供大家参考.具体如下: 在Asp.net mvc开发中,Controller需要向View提供Model,然后View将此Model渲染成HTML.这篇文章介绍三种由Controller向View传递数据的方式,实现一个DropDownList的显示. 第一种:ViewData ViewData是一个Dictionary.使用非常简单,看下面代码: public ActionResult ViewDataWay(int id) {

  • Java数据类型转换详解

    一.基本数据类型阐述 Java语言提供了八种基本类型.六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型. [注]JAVA没有unsigned类型 (1). 整数:int,short,byte,long (2). 浮点型:float,double (3). 字符:char (4). 布尔:boolean 基本型别     大小         最小值            最大值 void boolean     -----         -----             

  • 深入讲解C++数据类型转换的相关函数的知识

    C++数据类型转换以及转换构造函数 标准数据类型之间的转换 在C++中,某些不同类型数据之间可以自动转换,例如 int i = 6; i = 7.5 + i; 编译系统对 7.5是作为double型数处理的,在求解表达式时,先将6转换成double型,然后与7.5相加,得到和为13.5,在向整型变量i赋值时,将13.5转换为整数13,然后赋给i.这种转换是由C++编译系统自动完成的,用户不需干预.这种转换称为隐式类型转换. C++还提供显式类型转换,程序人员在程序中指定将一种指定的数据转换成另一

  • c#之用户定义的数据类型转换介绍

    c# 允许用户进行两种定义的数据类型转换,显式和隐式,显式要求在代码中显式的标记转换,其方法是在圆括号中写入目标数据类型. 对于预定义的数据类型,当数据类型转换时可能失败或丢失某些数据,需要显式转换, 1 把int数值转换成short时,因为short可能不够大,不能包含转换的数值. 2 把有符号的数据转换为无符号的数据,如果有符号的变量包含一个负值,会得到不正确的结果. 3 把浮点数转换为整数数据类型时,数字的小数部分会丢失. 此时应在代码中进行显式数据类型,告诉边起义你知道这会有丢失数据的危

  • 浅谈C++的语句语法与强制数据类型转换

    一个程序包含一个或多个程序单位(每个程序单位构成一个程序文件).每一个程序单位由以下几个部分组成: 预处理命令.如#include命令和#define命令. 声明部分.例如对数据类型和函数的声明,以及对变量的定义. 函数.包括函数首部和函数体,在函数体中可以包含若干声明语句和执行语句. 如下面是一个完整的C++程序: #include <iostream>//预处理命令 using namespace std; //在函数之外的声明部分 int a=3; //在函数之外的声明部分 int ma

随机推荐