走進C#(我的C#學習之旅) 之四(3)

來源:互聯網
上載者:User
怎麼樣?
答案是這樣的

s1 is A string
s2 is A string
s1 is now Anothing string
s2 is now string

看到這個結果大家感覺怎麼樣!我是很感到意外的。因為根據原來的C實現字串的方式,

在這裡面作為一個指標來說,s1與s2應該指向相同的地址。

另外對於字串處理還有另一個問題,如下例:
要構建如下一個串:"C:\PROGRAM FILE\WOM",我想大家明白我的意思了吧!
就是說在這裡有 \ 但是 \ 是做為逸出字元來用的。
(嗯,很簡單)這樣就行了呀:"C:\\PROGRAM FILE\\WOM",完全正確。而C#又提供了另一

種方式來解決這樣的問題。其實是引入了一個@:
上面的可以這樣寫 string a=@"C:\PROGRAM FILE\WOM",這樣C#會把@後的所有字元都做為

所來的形式來處理,並且他還包含分行符號。

好了,關於C#最基本的資料類型就是這些了!(噢,好像少了點什麼,對對,我下面就要說

了!)

上面是最基本的資料類型,下面我們來談談由這些基本的資料類型所構民的複全資料類型。

對於複合的資料類型,還是分兩類來簡述。

首先要說的還是實值型別。在C#提供了兩種複合的實值型別,結構與枚舉。
對於這兩種類型大家是不是很熟悉呀?但是大家不要大意,在C#中這兩種類型已經有了不小

的變化。

還是看個例子呀,還是例子比較能說明問題。

定義了如下的一個結構:
public struct Subscriber
{
public long lngSubscriberID;
public string strFirstName;
public string strMiddleName;
public string strLastName;
public decimal decBalance;
}
是不是和原來的結構有了很大的不同!在C#中結構其實就是一個特殊的類。
再看一下結構的使用:

Subscriber Subscriber1;
Subscriber Subscriber2;

Subscriber1=new Subscriber();
Subscriber1.strFilstName="John";
Subscriber1.strMiddleName="Q";
Subscriber1.strLastName="Public";
Subscriber1.decBalance=100;

Subscriber2=Subscriber1;

這裡定義了兩個結構:Subscriber1,Subscriber2。
然後用new運算子,對Subscriber1進行了初始化。關於初始化在這裡多說一句。對於結構可

以不用new運算子來進行始化。因為在定義的同時就已經進行了一次初始化,所有欄位的默

認值為0。但是這方式還有一個弊端,那就是沒辦法進行兩個結構變數的複製。
再下面的代碼就是實現了對新結構的賦值。而最後一行,就是我所說的結構間的複製。
那麼結構有什麼好處呢。我想最主要的一點就是體現在函數的傳遞中,可以把多個變數打到

一個結構變數中進行傳遞。
前面說過了,結構是一個特殊的類,他們倆最主要的不同就是結構不支援繼承。

好了,說了這麼多,下面來看看枚舉。
還是通過一個例子來看看枚舉。

public enum TimeOfDay
{
Morning=0,
Afternoon=1,
Evening=2
}
class EnumExample
{
public static int Main()
{
WriteGreeting(TimeOfDay.Morning);
return 0;
}
static void WriteGreeting(TimeOfDay timeOfDay)
{
switch(timeOfDay)
{
case TimeOfDay.Morning:
Console.WriteLine("Good morning!");
break;
case TimeOfDay.Afternoon:
Console.WriteLine("Good afternoon!");
break;
case TimeOfDay.Evening:
Console.WriteLine("Good evening!");
break;
default:
Console.WriteLine("Helo!");
break;
}
}
}

對於這個枚舉我想大家一目瞭然了吧!對於枚舉我私人認為呀,就是有點像常數,都是用名

字來打替資料嗎!

對於複合的實值型別就說到這,下面再看看複合的參考型別(數組、類、介面、委託)。

我首推的當然是大家最熟悉的,那就是數組:
由於在C#中限制了對指標的使用,所以對C#數組的使用也產生了影響。
首先還是看看例子:

int[] a;
int[] a = new int[32]
a[0]=35;
a[31]=322;
int[] b;
b=new int[32];
string[] c={"a","b","c"};
string[] d=new string[]{"a","b","c"};

對於上面的例子,說明了幾個要注意的問題。
(1)在C#中數組的起始下標還是為0的。
(2)對數組的初始化要使用new運算子。
(3)在C#中也可以動態定義數組。
(4)對於數組的初始化支援和JAVA一樣的{}方式。
(5)在數組的初始化中這種方式是決不不允許的
int len=3;
string d=new string[len]{"a","b","c"};
對應的解決方式:可以這麼寫:const int len=3;
也就是說不可以給變數來設定數組的長度。
(6)還忘了的一個就是數組定義要使用[]。
(7)再有一點不允許的使用方式如下:
string[] e=new string[3]{"a","b","c","d"};

下面再看個例子:

string[] d=new string[]{"Linda","Lily","Adidas"};
int ff=d.Length; //取資料長度
int ee=d.GetLength(0); //取出指定資料維的長度
Array.Sort(d); //對數組排序
Array.Reverse(d); //把數組反序

由於數組在C#中表示為一種特殊的類型,所以它們有自己的一些方法。這些方法為我們使用數組提供了很大的方便。

上面這些都是對一維數組的使用,同樣C#也是支援多維陣列的。下面來看看多維陣列吧。
還是通過一個例子來認識一下多維陣列的定義和操作。

int[,] a=new int[,]{{1,2,3},{1,2,3},{4,5,6}};
int[,,] b;
int[,,] b=new int[,,]{10,20,30};

string[][] aryLists=new string[3][];
aryLists[0]=new string[]{"a","b","c"};
aryLists[1]=new string[]{"d","e","f"};
aryLists[2]=new string[]{"g","h","i"};
int i;
for(i=0;i<aryLists.GetLength(0);i++)
{
int j;
for(j=0;j<aryLists[i].GetLength(0);j++)
{
Console.Write(aryLists[i][j] + ",");
}
Console.Write("\n");
}




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.