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

C#類(Classes)

編輯:.NET實例教程
類用於定義一個新的引用類型。c#不支持多重繼承,但支持一個類多重界面(“interfaces”)。
類的成員包括常量、位域、方法、屬性、索引(indexers)、事件、操作符、構造器、析構器和嵌套
類型聲明。(一口氣說這麼多,呼——)
對類中得所有成員有五種訪問權限:
·  “public” 可以被所有代碼訪問;
·  “protected” 只可以被繼承類訪問;
·  “internal” 只可以被同一個項目的代碼訪問;
·  “protected internal”只可以被同一個項目的代碼或繼承類訪問;
·  “private” 只可以被本類中的代碼訪問。
缺省狀態是“private”。

1。9 結構(Structs)
結構和類又非常多的相似之處,如結構可以實現界面,和可以擁有和類一樣的成員。結構與類也有一些重要的區
別:結構是值類型,而不是引用類型,所以不支持繼承!結構被存在堆棧中或者是內聯。結構在精心下可以提高
存儲效能。例如,定義一個與類有著相同信息的結構可以大大地減少存儲空間。在下例中,程序創建並初始化100
個points。在類“Point”中需要分配101個獨立的對象(object)。*/

class Point
{
public int x, y;
public Point() {
x = 0;
y = 0;
}
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
class Test
{
static void Main() {
Point[] points = new Point[100];
for (int i = 0; i < 100; i++)
points[i] = new Point(i, i*i);
}
}
/*
如果“Point”被作為一個結構,就可以這樣啦:*/
struct Point
{
public int x, y;
public Point(int x, int y) {
this.x = x;
this.y = y;
}
}
/*
因為Point在內聯中實例化,所以得到了優化。當然,錯誤運用的只會適得其反。比如,當我們傳遞結構的
時候就會比傳遞類要慢。因為結構的傳遞是拷貝值,類是引用值的地址。數據量越大差距就越明顯。
所以“There is no substitute for careful data structure and algorithm design.”(實在是不想譯
了 ^_^ )。

1。10 界面(Interfaces)
界面用來定義一種程序的契約。有了這個契約,就可以跑開編程語言的限制了(理論上)。而實現界面的
類或者結構要與界面的定義嚴格一致。界面可以包含以下成員:方法、屬性、索引和事件。例子:*/

interface IExample
{
string this[int index] { get; set; }
event EventHandler E;
void F(int value);
string P { get; set; }
}
public delegate void EventHandler(object sender, Event e);
/*
例子中的界面包含一個索引、一個事件E、一個方法F和一個屬性P。
界面可以支持多重繼承。就像在下例中,界面“IComboBox”同時從“ITextBox”和“IListBox”繼承。
*/
interface IControl
{
void Paint();
}
interface ITextBox: IControl
{
void SetText(string text);
}
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved