程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 走進C#(我的C#學習之旅) 之四(3)

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

編輯:.NET實例教程


怎麼樣? 
答案是這樣的 

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 morn

$False$

ing!"); 
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"); 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved