C#数据类型简单介绍

开发 后端
这里介绍C#数据类型被分为了二大类:C#语言本身所固有的数据类型和用户自定义数据类型,这一点也与C++相似。

C#有很多值得学习的地方,这里我们主要介绍C#数据类型,包括介绍结构数据类型是C#的一种内置数据类型等方面。

C#中的值型变量和引用型变量是有区别的

与C++一样,C#也是一种强类型编程语言。C#数据类型被分为了二大类:C#语言本身所固有的数据类型和用户自定义数据类型,这一点也与C++相似。

此外,C#语言还把变量分为值类型和引用类型。除非是被包含在一个引用类型中,值类型变量的值保留在栈中,这一点与C++中的变量非常相似。引用类型的变量也是栈的一种,它的值是堆中对象的地址,与C++中的指针非常地相似。值类型变量的值被直接传递给方法,引用型变量在被作为参数传递给方法时,传递的是索引。

类和界面可以创建引用类变量,但需要指出的是,结构数据类型是C#的一种内置数据类型,同时也是一种值型的数据类型。

注意隐性的C#数据类型转换

Boxing和unboxing是使值型数据类型被当作索引型数据类型使用的二个过程。值型变量可以被包装进一个对象中,然后再被解包回值型变量。包括内置数据类型在内的所有C#数据类型都可以被隐性地转化为一个对象。包装一个值型变量就会生成一个对象的实例,然后将变量拷贝到实例中。

Boxing是隐性的,如果在需要索引型数据类型的地方使用了值型数据类型的变量,值型变量就会隐性地转化为索引型数据类型的变量。Boxing会影响代码执行的性能,因此应当尽量避免,尤其是在数据量较大的时候。

如果要将一个打包的对象转换回原来的值型变量,必须显性地对它进行解包。解包需要二个步骤:首先对对象实例进行检查,确保它们是由值型的变量被包装成的;第二步将实例中的值拷贝到值型变量中。为了确保解包成功,被解包的对象必须是通过打包一个值型变量的值生成的对象的索引。

  1. using System;  
  2. public class UnboxingTest  
  3. {  
  4. public static void Main()  
  5. {  
  6. int i = 123;  
  7.  
  8. //打包  
  9. object o = i;  
  10.  
  11. // 解包(必须是显性的)  
  12. int j = (int) o;  
  13. Console.WriteLine("j: {0}", j);  
  14. }  

如果被解包的对象是无效的,或是一个不同数据类型对象的索引,就会产生InvalidCastException异外。

【编辑推荐】

  1. 运用C#数据提供者
  2. C#允许运算符重载剖析
  3. Java和C#顶层声明概述
  4. C#完全限定名简单分析
  5. C#数据类型简单介绍
责任编辑:佚名 来源: IT168
相关推荐

2009-09-04 10:16:30

C#数据类型

2011-06-08 13:35:18

C#数据类型

2009-09-11 12:00:33

C#预定义数据类型

2009-08-03 17:51:43

C#引用类型

2009-08-27 10:19:22

C#匿名类型

2009-08-14 16:46:44

C#元数据

2009-08-27 15:47:00

C#数据类型string

2010-01-19 13:17:05

C++数据类型

2009-08-14 13:52:18

C#判断数据类型

2009-09-01 16:35:55

C#操作String数

2009-08-12 16:26:27

C#数据类型转换

2011-08-04 15:14:39

Objective-C 数据类型

2009-08-06 18:15:13

C# SQL Serv

2009-08-13 17:36:54

编译C#代码

2009-09-01 16:19:57

C# new()约束

2009-08-20 16:25:59

C# 匿名方法

2009-08-07 17:12:07

C# DLL函数

2009-08-25 13:38:35

C# Timer组件

2009-09-03 09:40:57

C#创建表单

2009-08-06 14:53:41

C# User类
点赞
收藏

51CTO技术栈公众号