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