C#速成(之三) (轉)
-------------------
修飾符
-------------------
你必須已經知道public、private、protected這些常在C++當中使用的修飾符。這裡我會討論一些引入的新的修飾符。
:namespace prefix = o ns = "urn:schemas--com::office" />
readonly(只讀)
readonly修飾符僅在類的資料成員中使用。正如這名字所提示的,readonly 資料成員僅能只讀,它們只能在構造或是直接初始化操作下賦值一次。readonly與const資料成員不同,const 要求你在宣告中初始化,這是直接進行的。看下面的示例程式碼:
class MyClass
{
const int constInt = 100; //直接初始化
readonly int myInt = 5; //直接初始化
readonly int myInt2; //譯者注:僅做宣告,未做初始化
public MyClass()
{
myInt2 = 8; //間接的
}
public Func()
{
myInt = 7; //操作(譯者注:不得賦值兩次)
Console.WriteLine(myInt2.ToString());
}
}
sealed(密封)
密封類不允許任何類繼承,它沒有派生類。因此,你可以對你不想被繼承的類使用sealed關鍵字。
sealed class CanNotbeTheParent
{
int a = 5;
}
unsafe(不)
你可使用unsafe修飾符來定義一個不安全的上下文。在不安全的上下文裡,你能寫些如C++指標這樣的不安全的程式碼。看下面的示例程式碼:
public unsafe MyFunction( int * pInt, double* pDouble)
{
int* pAnotherInt = new int;
*pAnotherInt = 10;
pInt = pAnotherInt;
...
*pDouble = 8.9;
}
-------------------
interface(介面)
-------------------
如果你有COM方面的概念,你會立亥明白我要談論的內容。一個介面就是一個抽象的基類,這個基類僅僅包含功能描述,而這些功能的實現則由子類來完成。C#中你要用interface關鍵字來定義象介面這樣的類。就是基於這樣的介面上的。C#中你不支援C++所允許的類多繼承(譯者注:即一個派生類可以從兩個或兩個以上的父類中派生)。但是多繼承方式可以透過介面獲得。也就是說你的一個子類可以從多個介面中派生實現。
using System;
interface myDrawing
{
int originx
{
get;
set;
}
int originy
{
get;
set;
}
void Draw( shape);
}
class Shape: myDrawing
{
int OriX;
int OriY;
public int originx
{
get{
return OriX;
}
set{
OriX = value;
}
}
public int originy
{
get{
return OriY;
}
set{
OriY = value;
}
}
public void Draw(object shape)
{
... // do something
}
// class's own method
public void MoveShape(int newX, int newY)
{
.....
}
}
-------------------
Arrays(陣列)
-------------------
C#中的陣列比C++的表現更好。陣列被分配在堆中,因此是引用型別。你不可能訪問超出一個陣列邊界的元素。因此,C#會防止這樣型別的。一些輔助方式可以迴圈依次訪問陣列元素的功能也被提供了,foreach就是這樣的一個語句。與C++相比,C#在陣列語法上的特點如下:
方括號被置於資料型別之後而不是在變數名之後。
建立陣列元素要使用new運算子。
C#支援一維、多維以及交錯陣列(陣列中的陣列)。
示例:
int[] array = new int[10]; // 整型一維陣列
for (int i = 0; i < array.Length; i++)
array[i] = i;
int[,] array2 = new int[5,10]; // 整型二維陣列
array2[1,2] = 5;
int[,,] array3 = new int[5,10,5]; // 整型的三維陣列
array3[0,2,4] = 9;
int[][] arrayOfarray = = new int[2]; // 整型交錯陣列(陣列中的陣列)
arrayOfarray[0] = new int[4];
arrayOfarray[0] = new int[] {1,2,15};
-------------------
器
-------------------
索引器被用於寫一個訪問集合元素的方法,集合使用"[]"這樣的直接方式,類似於陣列。你所要做的就是列出訪問例項或元素的索引清單。類的屬性帶的是輸入引數,而索引器帶的是元素的索引表,除此而外,他們二者的語法相同。
示例:
注意:CollectionBase是一個製作集合的庫類。List是一個protected型的CollectionBase成員,儲存著集合清單列表。
class Shapes: CollectionBase
{
public void add(Shape shp)
{
List.Add(shp);
}
//indexer
public Shape this[int index]
{
get {
return (Shape) List[index];
}
set {
List[index] = value ;
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-984619/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#速成(之一) (轉)C#
- C#速成(之二) (轉)C#
- C#速成(之四) (轉)C#
- C#速成(之五)全文完 (轉)C#
- (X)Emacs 速成(轉)Mac
- 轉:SAP專案管理系統速成專案管理
- C#程式設計利器之三:介面(Interface)C#程式設計
- Linux程式設計之三(轉)Linux程式設計
- CTI的典型應用之三 (轉)
- 維修電腦知識之三 (轉)
- USB開發速成-我最真實的經驗!(轉)
- SCJP認證套題解析之三 (轉)
- RxJS速成 (上)JS
- RxJS速成 (下)JS
- C# 9.0新特性詳解系列之三:模組初始化器C#
- 水木-給Linux新手 [系列之三] (轉)Linux
- Windows未公開函式揭密——之三 (轉)Windows函式
- Swift速成:捕獲列表Swift
- Windows 到 Linux 之旅:第 2 部分. 控制檯速成班(轉)WindowsLinux
- Beginner with C# (轉)C#
- WHAT IS C# (轉)C#
- C++程式設計思想筆記之三 (轉)C++程式設計筆記
- VC++ ADO開發實踐之三 (轉)C++
- C#使用Thrift作為RPC框架入門(三)之三層架構C#RPC框架架構
- SQL 語法速成手冊SQL
- [譯] 密碼學速成課密碼學
- 視覺化速成指南-大小視覺化
- iOS 6 Objective-C 速成iOSObject
- C#:Dictionary轉DataTableC#
- 可怕的 C# (轉)C#
- Beginner with c# 5 (轉)C#
- Beginner with c# 6 (轉)C#
- Beginner with c# 2 (轉)C#
- Beginner with c# 3 (轉)C#
- Beginner with c# 4 (轉)C#
- Beginner with c# 7 (轉)C#
- C#聊天程式 (轉)C#
- C# 和 API (轉)C#API