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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python速成Python
- 解鎖本地生活轉化鏈路,促進快速成交!
- RxJS速成 (下)JS
- RxJS速成 (上)JS
- c# svg轉Bitmap Bitmap轉ImageSourceC#SVG
- C# 操作xml(轉)C#XML
- C#:Dictionary轉DataTableC#
- 玩轉 Cgroup 系列之三:挑戰手動管理 Cgroup
- C#使用Thrift作為RPC框架入門(三)之三層架構C#RPC框架架構
- C# 9.0新特性詳解系列之三:模組初始化器C#
- c#列舉轉換C#
- C#將html轉pdfC#HTML
- C# 型別轉換C#型別
- C# PDF轉圖片C#
- C#中JSON轉換類C#JSON
- C#中漢字轉拼音C#
- C# 將OFD轉為PDFC#
- C# 將PDF轉為ExcelC#Excel
- C# 將HTML轉為XMLC#HTMLXML
- C# 將Excel轉為XMLC#ExcelXML
- 玩轉大資料系列之三:資料包表與展示大資料
- [轉][C#][WPF] 遮罩效果小試C#遮罩
- C# 時間戳轉時間C#時間戳
- C# bytes[]和sting互相轉換C#
- C# TTS-文字轉語音C#TTS
- C#漢字轉漢語拼音C#
- 瞭解下C# 型別轉換C#型別
- [譯] 密碼學速成課密碼學
- SQL 語法速成手冊SQL
- 視覺化速成指南-大小視覺化
- Y 分鐘速成 Dynamic Programming
- 稀疏矩陣之三元組壓縮儲存並且轉置矩陣
- (C#)時間戳、DateTime相互轉換C#時間戳
- C# 列舉遍歷和轉換C#
- 【轉】C# 中 強制退出WinForm程式C#ORM
- C#:檔案、byte[]、Stream相互轉換C#
- 【轉】[C#] 重新命名資料夾C#
- Golang 新手教程:入門速成指南Golang
- 【部分】Java速成學習筆記Java筆記