在正式開始講解數據類型之前,我要強調的一點是: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;
}
}
大家覺得會輸出什麼結果,我賣個關子(我猜錯了)。
怎麼樣,結果出來了嗎?
我可說結果了!如果你對了,你真是天才!