您好,登錄后才能下訂單哦!
C#語言中的幾個比較基礎的名詞解釋:
1、類 和 類的結構:
class【引用類型,繼承自system.object類】和struct【值類型,繼承自system.valuetype類】都是可以用來定義一個類的。
類的定義:
class myclass
{
}
而如果我們確定這個myclass類的公共、私有以及保護等類型的時候,就要在前面加上:
public/private/protected class myclass
{
}
PS:所謂的基類,可以理解成像上面說過的class類就是從system.object類繼承而來的,那么我們就稱呼system.object類為基類。
引入另一個概念:接口【interface】。
接口:就是當class想繼承幾個類的時候,但是沒有辦法實現的情況下,就要借助接口來給與幫助。
例子:public partial class Save : System.Web.UI.Page;
在上面這個例子里面,我們定義的是一個局部的類save,而這個類繼承了System.Web.UI.Page。
類和結構:
一、類是引用類型在堆上分配,類的實例進行賦值只是復制了引用,都指向同一段實際對象分配的內存;
類有構造函數和析構函數{這兩個函數都是實函數,都不能使虛函數。}
類可以繼承和被繼承。
二、結構是值類型【struct】在棧上分配(雖然訪問時間比較堆要少,但是棧的資源有限),結構的賦值將分配產生一個 新的對象;
結構沒有構造函數,但可以添加。結構沒有析構函數;
結構不可以繼承自另一個結構或者是被繼承,但和類一樣可以繼承自接口。
【堆和棧的概念:
堆:在事先不知道程序所需要的對象的數量和大小或者是對象太大不適合用堆棧分配器的情況下,用來動態分配和釋 放程序所使用的對象。
棧:是一種數據結構,是只能在某一端插入和刪除線性表。原則是后進先出。】
2、對象:
我們已經知道了類的概念了,而【具有相同或者是相似的性質的】對象的抽象就是類。可以這樣子理解就是:
對象的抽象就是類,而類的具象就是對象。或者說類的實例化就是對象。
PS:類的成員有:屬性、方法名、字段;
而對象的實例名也包括上面這三項,所以可以更清楚的解釋這兩者之間的關系。
3、屬性和方法:
舉幾個屬性的例子:
Response.height/weight/color;等等
舉幾個方法的例子:
console.write/writeline/beep;等等
用很土的方式去解釋這兩者之間的區別的話:屬性就相當于說是人的身高體重之類的,后面不跟括號,而方法則指的是舉動行動方式之類的,后面是要跟括號的。
例子: Response.Write("刪除成功!");
Response.End();
4、函數:
一、函數的定義要有一下幾個部分:
兩個關鍵字:static【靜態:static void Main(string[] args);就是表示的是將函數Main中的代碼存放在靜態存儲區的;而且還表示我們聲明的函數Main是個靜態函數。】和void【沒有返回值的。】
函數名后面要跟圓括號,就像上例中的Main()。
而函數后面還有一個要執行的代碼塊。
【一個函數不僅僅只是一個簡單的名詞,它代表了一個小程序的功能的體現。】
例子:
class program
{
static void Write()
{
console.Writeline("你來自火星!");
}
static void Main(string[] args)
{
Write();
Console.readkey();
}
}
二、賦值:
先看個例子:
string cmdText = "delete from StudentInfo where StudentID = @StudentID";
首先我們分析一下這個例子,第一個部分就是我們聲明的類型:字符串;而cmdText就是我們聲明的字符串的名字,而后面引號里面的字符串就是直接賦給cmdText這個字符串常量的值。
還有諸如int、double、float等等之類的也跟上面是類似的。
ps:在聲明了常量之后,一般都是要賦值的,也是我們所說的初始化。
例子:int xsize=40,ysize;
雖然這里ysize并沒有賦值,但是當我們在程序里面運行要用到的時候還是要給它賦初值【初始化】的。
三、函數的調用:
同樣的我們先看一個例子:【姑且先不管他是否完全正確,現在我先注釋一下!】
#include <iostream>
using namespace std; //命名空間的名字叫做std;
void fibo(int &a,int &b,int &c)//定義函數fibo;
{
for(int iter=2; iter < 40; iter++)
{
c =a+b;
cout <<"F(" <<iter <<")\t=\t" <<c<<endl;
a=b;
b=c;
}
}//函數體,執行了函數的功能代碼;
int main() {
int x0, x1, x2=0;
cout << "Podaj F(0) = ";
cin >> x0;
cout << "Podaj F(1) = ";
cin >> x1;
fibo(x0,x1,x2);//調用函數。
return 0;
}
ps:函數每被調用一次只會返回一個值。
四、構造函數和析構函數:
在上面已經提到過了構造函數和析構函數,現在更深入的理解一下:
例子:class Myclass
{
public Myclass()
{
}
}
在這例子中,我們看到構造函數Myclass和包含他的類是同名的,而且這個函數沒有參數,但是是可以帶參數的【這個很重要!】。由于這個public,說明這個函數是個公共函數,所以類的對象可以使用這個構造函數進行實例化。
在。NET中使用的析構函數叫做finalize()【跟class一樣是從system。object類提供的。】
而我們再看下面的例子:class Myclass
{
~ Myclass()
{
}
}
也就是類的析構函數由帶有~前綴的類名(與構造函數的相同)來聲明。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。