在正式开始讲解数据类型之前,我要强调的一点是:C#和Java一样都是强类型的语言。所谓的强类型的语言第一点就是说C#的每个变量都是有类型的,而且每个表达式也有类型。这种类型的定义都是相当严格的。第二点就是说在C#中所有的数值传递,不管是直接的还是通过方法调用经由参数传递的都要先进行类型相容性的检查。
简单说C#的数据类型主要分为值类型和引用类型两大类。
那么这两大类类型究竟有什么区别呢?关于这个书中说了很多,其实最主要的是就是他们的存储位置和引用方式不同。值班类型变量把其数据存储在堆栈中,而引用类型把变量的数据存储在堆中。所谓的值类型其实就是变量本身包含他们的数据,而引用类型的变量包含的则是指向数据存储地引用(这是我总结的)。
具体来说,C#共有15个预定义类型,其中13个值类型,2个引用类型(string,object)。
那么首先我们来看看13个基本类型。
看一下下面的这张表格:
看了这张表格,大家是不是基本有个了解了?其实这些数据类型和Java及其它的一些编程语言是很相似的。
下面就一些注意的地方再简述一二(不对的地方请大家指正吧,呵呵~)。
(1)在C#的数据类型中的byte与char的意义是不同的,所以他们之间进行编译转换时一定要注意。
(2)bool和C中的完全不同,他的值true与false决不等价于1与0。
(3)在C#中char类型是用''引起来的,如果用" ",那就变成string了。
(4)对于char类型,它也和C等语言类似,存在转意字符。下面拉个表给大家
转义序列
字符
\’
单引号
\”
双引号
反斜杠
\0
空
\a
警告
\b
退格
\f
换页
\n
换行
\r
加车
\t
水平制表符
\v
垂直制表符
(5)char类型除了我说过的用''来表示外,还可以用如下的方式:'\u0041'(四位16进制unicode值),'\x0041'(这是16进制的形式,还有(char)65。
还有一点差点忘了,在定义一个变量之后,一定要赋初值。
关于基本类型就是这么多了,下面咱们看看引用类型。
引用类型其实就只有两个(object,string),那么我们首先来看看object。
我想根据字面的意思,大家已经猜个八九不离十了吧!
在C#中,object类型是从所有内在和用户定义的类型的老爸(够形象吧)。可以用object引用绑定任何特定子类型的对象。
我想对于使用C语言的朋友,对于字符串处理的繁琐的应该印象深刻吧(我可是深有体会)。不过这回来学C#的,可以放心,在C#已经预置了这种类型。
为了更加透彻的理解string,我们来看个例子。
using System;
class StringExample
{
public static int Main()
{
string s1="A string";
string s2=s1;
Console.WriteLine("s1 is" + s1);
Console.WriteLine("s2 is" + s2);
s1="Another string";
Console.WriteLine("s1 is now" +s1);
Console.WriteLine("s2 is now" + s2);
return 0;
}
}
大家觉得会输出什么结果,我卖个关子(我猜错了)。
怎么样,结果出来了吗?
我可说结果了!如果你对了,你真是天才!