好,关于类型呢,有几个细节,我们得仔细地看一下
就是简单类型呢主要是数字和布尔型,那么数字型呢又
细分了整数类型,整数类型呢又细分了有符号的、 无符号的
和字符,注意这个字符类型呀 char 它也是整数类型。
那么有符号数呢 sbyte 这是 1 个字节, short 2 个字节, int
呢 4 个字节, long 8 个字节 如果是长整数呢,我们要加个 L ,然后
0x 呢表示十六进制 注意呢,没有八进制的写法啊,为什么去掉八进制呢?
一个是八进制用得少,另一个呢就是我们 C 语言那个八进制呀
很容易就写错了,比如说我们写个 012 它实际上是八进制的
12,也就是等于 10 但是这个就是太容易错了, C#
呢有一个很大的特点,凡是容易错的 都把它去掉,既然我们容易错,又不太常用,所以去掉
那无符号数呢有 byte, ushort ,u 呢就是 unsigned,就没有,无符号数的
uint ulong,然后我们写的时候呢,写个 UL ,如果是长整数加个
L 字符类型那就是单引号了,字符呢在 C# 里它都是用
Unicode 来表示的 所以写个 \u,用十六进制的
4 个数字来表示,也就是 字符类型它 Unicode 表示的时候呢,是 2
个字节,就是 4 个十六进数 \n 呢表示回车。
实数呢 有浮点数, 4 个字节, double 双精度实数, 8 个字节。
float 呢,我们要加个 F double 呢后面加个 D ,但是这个
D 呢一般都省略了,也可以用科学计数法 来写,表示 1.5 乘以
·10 的负 3 次方 十进制式类型呢,它也是一种简单类型
它主要是用表示呢这个小数点后面的那个数字呢 是精确表示,我们知道浮点数呢它是用二进制表示
它不能精确的表示十进制的,比如说 0.2 ,它是表示不了的,精确的
所以呢,十进制数呢就是为了解决这个问题,主要用于一些比如说货币呀来表示。
我们后面 加个 M。
布尔类型呢就 bool 来表示 它的值呢有 true 和 false 两个,真和假 也就是逻辑性。
不能用 0 和 1 代替,这也是呢 为了避免 C
语言经常出错啊 我记得以前我们考 C
语言,总是说 if a 等于 5 那这个 a 等于 5
呢,它即是个赋值,然后呢又用到逻辑类型里头,所以很容易错 那么
C# 呢就完全地把这些问题统统避免了,逻辑就是逻辑,不论是
0 和 1 呃,这是刚才说的逻辑性,不能用 0 和 1
代替 字符类型刚才也提到了,字符类型呢用 char 就表示
character ,就字符的意思 它是用 Unicode
来表示的,我们也可以用一些转义字符,这个跟 C 语言差不多的
主要要注意的是 \u 这个,另外呢我们要注意它是单引号来表示的
所以单引号呢要表示的话,表示单 引号本身呢就用
\' , \" 等等 \r 和 \n 呢,一个是回车,一个是换行
因为有的同学呢这个记不住,我教大家一个办法 return
回车 \r 那就是回车嘛,对吧? n 呢, new line
, new 新的一行换行,那就记住了 哎呀还有其它的等等,
\t 这是我们常用的是 table ,跳格
字符串类型呢,要注意的是用 string 来 表示的。
这个 string 呢 s 呢是小写,也可以用 大写的 Syetem.string
,它是一个引用类型,所以它不是值类型,要注意的 要用双引号来写。
另外我们还有一个字符串多了一个写法呢,就是用个,前面用个 @ 在双引号的前头用个
@ 表示什么呢?表示它里面呢这个可以换行,就可以换行写
那就是说这里有个回车我们不写成 \n 了,所以这个很方便了。
另外还有一个最大的好处呢就是 不进行 \ 的转义。
那比如说我们写一个文件名, C:\windows
\system32,那就不用写双斜杠了,所以用了这个 @
的好处啊 就是就不用写双斜杠了,因为这样写起来更方便一点。
这是 C# 的这个字符串 因为数据类型对大部分同学来说都比较熟悉,所以,但是有一些细节呢跟别的
语言我们要比较一下。
比如说针对 C++ 的同学来说呢,你要注意的什么 引用类型和值类型呢是由其类型定义的,而不是由其使用决定的
那什么意思呢?比如说我们 C++ 呢,你同样定义一个 class ,是一个类 Book
这个 Book 呢,你可以这样写呢,它就表示一个变量
这样写呢,就表示一个指针;这样写呢,就表示一个引用;这样写呢,表示一个指针的引用 一会就把我们弄晕了,但是
C# 不一样, C# 就是用它的类型,这个 Book
如果它是引用类型,它就是引用的,就相当于指针了 它永远不相当于,不会有这么复杂的这么不同的情况
另外呢,类型是严格的,这个主要针对 JavaScript
的同学 你比如说,前面就有同学在论坛里问到了,就是文本框的文本等于一个数字
它是没法等的,它必须把这个数字呢转成字符串, To String 因为它是文本的形式, string 类型。
然后像 VB 的程序员也要注意呢,有一些细节 比如说 int 它是 32 位,我们知道
VB 里面的 int 呢,太短了,只有 16 位 这个不一样,是 32 位长,所以它的范围要更大一些
另外呢字符类型是整数,它与字符串是不同的,一个是单引号 来写的,一个是双引号。
所以这个也都是一些细节 大家在以后用的过程当中呢,会逐渐逐渐熟悉起来
另外一个呢, C# 新版本,比如 3.0 以上的版本呢,有一些特殊类型
我们先了解,以后呢在用的时候呢再熟悉。
比如说一个类型 var 这个 var 呢,有点像 JavaScript
里面的变体型,就是说任意类型 但实际上呢,在 C# 里面它不是任意类型
它是叫推断类型,也就是说它是由你后面 写的这个值来推断它是什么类型,比如说
1 + 2 那它推断它是整数,实际上它的类型是固定的,所以这个要注意 那么它的用处是什么呢?就是当我们用
这个变量,这后面这个以后会用到一种特殊情况,这后面那个类型写起来特别长
那我们直接用这样一写,让编译器来推断它的类型 另外一种呢,叫
Nullable 类型,它就是可以有值也可以没值的,所以这个很特殊
它在 int 后面加个 ?, a = 32 就说明它有值 我们可以用
a.HasValue 是不是有值来进行判断 这个主要用于数据库啊等等一些场合。
还有一种在 C# 4.0 以上版本呢有一个 Dynamic
动态类型,那么它是有动态语言运行式来支持的 那这个动态类型呢,实际上它就是,那这个真正相当于变体型,它是
这个类型呢在编译的时候不检查,它就认为你这个类型是对的,所以它不检查类型。
主要用于 一些比如说 COM 组件,比如说我们跟 Excel,访问 Excel
的那个格子,那这个时候我们用动态类型呢 就很方便了。
总之来说这几种类型呢都是由于 C# 新版本增加的,方便我们使用的,以后会逐渐用到