[C#學(xué)習(xí)筆記](méi)面向?qū)ο?創(chuàng)新互聯(lián)

編寫(xiě)程序只不過(guò)是對(duì)象堆砌而成的,這些對(duì)象可以是獨(dú)立的,也可以是從另外一個(gè)對(duì)下崗繼承過(guò)來(lái),對(duì)

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比修文網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式修文網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋修文地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

象之間可以傳遞消息,并通過(guò)消息來(lái)改變自身的狀態(tài).

類是對(duì)象的模板.即類是對(duì)一組由相同數(shù)據(jù)和相同操作的對(duì)象的定義,一個(gè)類所包含的方法和數(shù)據(jù)描述

一組對(duì)象的共同屬性和行為.類是在對(duì)象之上的抽象,對(duì)象則是類的具體化. 類可以有其子類,也可有

其他類,形成類層次結(jié)構(gòu).

類是對(duì)具有相同屬性和行為的一組形似的對(duì)象的抽象.

面向?qū)ο蟮幕咎卣? 封裝,繼承,多態(tài)

Object是所有的類的基類.

定義類與創(chuàng)建類的對(duì)象

class Myclass{

//類的主題

}

★★★★類的修飾符

在定義類是,可以在類的前面添加訪問(wèn)修飾符,類的修飾符用于控制被訪問(wèn)的范圍.默認(rèn)情況下,類的修

飾符為private

new僅允許在嵌套類定義時(shí)使用,以表明類中隱藏了由基類中繼承而來(lái)的與基類中同名的成員

public類可以在任何地方訪問(wèn)

protected只能從所在類和所在類的派生出來(lái)的子類進(jìn)行訪問(wèn),不能實(shí)例化,只能繼承.

★★★★創(chuàng)建類的對(duì)象

MyClass myclass = new MyClass();

結(jié)構(gòu)的定義:

結(jié)構(gòu)與類相似,主要區(qū)別在于:類是存儲(chǔ)在堆上的引用類型,而結(jié)構(gòu)式存儲(chǔ)在堆棧上的值類型,以及訪問(wèn)

方式和一些特征(例如:結(jié)構(gòu)不支持繼承);

定義結(jié)構(gòu):

在語(yǔ)法上,定義結(jié)構(gòu)和定義類非常相似,主要區(qū)別是定義結(jié)構(gòu)使用struct關(guān)鍵字代替class關(guān)鍵字.對(duì)于

類和結(jié)構(gòu),都是用new關(guān)鍵字生聲明實(shí)例

struct FirstStruct{  //聲明結(jié)構(gòu)

//代碼

}

FirstStruct first = new FirstStruct(); //實(shí)例化結(jié)構(gòu)

類的數(shù)據(jù)成員:

構(gòu)造函數(shù),析構(gòu)函數(shù),常數(shù),字段,方法,屬性,索引器,運(yùn)算符,事件,委托,類,接口,結(jié)構(gòu).

方法:

public string FangFa(){

return "返回值";

}

public void FangFa(){

Message.Show("無(wú)返回值");

}

★★★★ref關(guān)鍵字

可以通過(guò)引用為方法傳遞參數(shù),不過(guò)若通過(guò)引用為方法傳遞參數(shù),需要使用ref關(guān)鍵字.

string sex ="www";

Person  p = new Person();

string name = p.GetName(ref sex);  //這里將會(huì)把sex值改為女

Console.WriteLine("");

class Person {

public void GetName(ref string sex)

{

sex="女";

}

}

★★★★out關(guān)鍵字

out關(guān)鍵字和ref關(guān)鍵字很相似,out關(guān)鍵字也會(huì)導(dǎo)致參數(shù)通過(guò)引用來(lái)傳遞.與ref關(guān)鍵字不同之處在于

ref要求變量必須在傳遞之前進(jìn)行初始化.如果使用out關(guān)鍵字,方法定義和調(diào)用方法都必須顯示使用

out關(guān)鍵字.盡管作為out參數(shù)傳遞的變量不必再傳遞之前進(jìn)行初始化,但必須在方法中為out參數(shù)賦值.

在方法中傳遞參數(shù)時(shí)使用out關(guān)鍵字,便是這個(gè)變量要回傳值.最簡(jiǎn)單的運(yùn)用時(shí)除法,例如你需要一個(gè)除

法方法,同時(shí)得到余數(shù)和商.但是普通的方法只能返回一個(gè)值,這個(gè)時(shí)候就可以使用out參數(shù),把另一個(gè)

值返回.

int i = 15;

int j = 6;

int yushu;

Person p = new Person();

Consol.WriteLine();

class Person{

public int GetShangYuShu(int i,int j, out int yushu){

yushu = i%j;

return i/j;

}

}

★★★★重載

在C#中,類成員都有一個(gè)唯一的簽名,而方法的簽名由名稱\參數(shù)個(gè)數(shù)和參數(shù)數(shù)據(jù)類型組成.只要簽名不

同,就可以在一種類型內(nèi)定義具有相同名稱的多種方法.當(dāng)定義兩種或多種具有相同名稱的方法時(shí),就

稱重載.

通俗的講: 方法重載就是方法名相同,參數(shù)個(gè)數(shù)或參數(shù)類型不同.

string name ="小米";

int age = 21;

Peson p = new Person();

p.GetName();

p.GetName(name,age);

class Person{

public void GetName(){//重載方法1

//代碼

}

public void GetName(string name){ //重載方法2

//代碼

}

public void GetName(string name,int age){ //重載方法3

//代碼

}

}

★★★★靜態(tài)方法

定義靜態(tài)方法和定義非靜態(tài)方法相似,只是在定義靜態(tài)方法時(shí),需要在返回類型前加static關(guān)鍵字.靜

態(tài)放在程序啟動(dòng)時(shí)系統(tǒng)會(huì)在內(nèi)存里為靜態(tài)方法創(chuàng)建一個(gè)實(shí)例,不需要再手動(dòng)去實(shí)例靜態(tài)方法.通過(guò)類名

可以直接調(diào)用靜態(tài)方法,還有就是靜態(tài)方法會(huì)在內(nèi)存中占一定的內(nèi)存空間.

在類中一旦定義了靜態(tài)方法,name在類中就可以直接通過(guò)類名調(diào)用靜態(tài)方法,并不需要通過(guò)實(shí)例化對(duì)象

訪問(wèn)靜態(tài)方法.

注意:系統(tǒng)一旦為靜態(tài)方法分配了內(nèi)存空間,靜態(tài)方法就會(huì)一直占用.所以在系統(tǒng)內(nèi)存比較小時(shí),盡量少

用靜態(tài)方法.

public static string GetName(){

return"www";

}

擴(kuò)展方法使你能夠向現(xiàn)有類型"添加",而無(wú)需創(chuàng)建新的派生類型\重新編譯或以其他方式修改原始類型

.擴(kuò)展方法是一種特殊的靜態(tài)方法,但可以像擴(kuò)展類型上的實(shí)例方法一樣進(jìn)行調(diào)用.因此,通過(guò)擴(kuò)咱方法

,就可以在不修改一個(gè)類型的前提下對(duì)一個(gè)類型進(jìn)行功能上的擴(kuò)充.

★★★★擴(kuò)展方法

擴(kuò)展方法使你能夠向現(xiàn)有類型"添加"方法,而無(wú)需創(chuàng)建新的派生類型,重新編譯或以其他方式修改原始類型.擴(kuò)展方法時(shí)一種特殊的靜態(tài)方法,但可以像擴(kuò)展類型上的實(shí)例方法一樣進(jìn)行調(diào)用.它定義在靜態(tài)類中,但可以在其他類的對(duì)象上像調(diào)用實(shí)例方法那樣進(jìn)行調(diào)用.因此,通過(guò)擴(kuò)展方法,就可以在不修改一個(gè)類的前提下對(duì)一個(gè)類進(jìn)行功能擴(kuò)充.

擴(kuò)展方法和一般的靜態(tài)方法的定義類似,唯一區(qū)別是在第一個(gè)參數(shù)的前面加上關(guān)鍵字this作為修飾符,同時(shí)第一個(gè)參數(shù)也決定了擴(kuò)展方法可以擴(kuò)展的類型.

public static class AddClass{

public static string GetLower(this string str)

{

return str.ToLower();

}

public static string GetName(this Student stu)

{

return "擴(kuò)展方法";

}

public static string GetCanShu(this Student stu,string str) //帶參數(shù)的擴(kuò)展方法

{

return str;  //返回參數(shù)str

}

}

public class Student{

//這里沒(méi)有代碼

}

//----------調(diào)用代碼

string URL = "HTTP://WWW.XXX.COM"; //要轉(zhuǎn)化為小寫(xiě)字母的字符串

URL.GetLower(); //結(jié)果: http://www.xxx.com

Student s = new Student();  //實(shí)例化Student類

s.GetNme(); //結(jié)果: 擴(kuò)展方法

string str = "擴(kuò)展方法參數(shù)"  //結(jié)果:擴(kuò)展方法參數(shù)

//------------擴(kuò)展方法的特點(diǎn)

1.擴(kuò)展方法是給現(xiàn)有類型添加一個(gè)方法.

2.擴(kuò)展方法是通過(guò)制定關(guān)鍵字this修飾第一個(gè)參數(shù)

3.擴(kuò)展方法必須聲明在靜態(tài)類中.

4.擴(kuò)展方法要通用對(duì)象來(lái)調(diào)用.

5.擴(kuò)展方法可以帶參數(shù).

★★★★屬性

在C#編寫(xiě)的程序中,屬性提供靈活的幾只讀取或編寫(xiě)私有字段的值.使用屬性可以像使用公共數(shù)據(jù)成員一樣使用屬性,單實(shí)際上它們是稱作"訪問(wèn)器"的特殊方法.這使得可以輕松訪問(wèn)數(shù)據(jù),此外還有助于提高方法的安全性和靈活性.

對(duì)于類的實(shí)例化對(duì)象,屬性顯示為字段.對(duì)于類的構(gòu)造來(lái)說(shuō),屬性是一個(gè)或兩個(gè)代碼塊:表示一個(gè)get訪問(wèn)器和set訪問(wèn)器.當(dāng)讀取屬性時(shí),執(zhí)行g(shù)et訪問(wèn)器的代碼塊;當(dāng)向?qū)傩苑峙湟粋€(gè)新值時(shí),執(zhí)行set訪問(wèn)器的代碼塊.value關(guān)鍵字用于定義set索引器分配的值.

語(yǔ)法格式

public string PropertyName

{

get{

return "返回私有變量的值或返回其他一些有意義的值";

}

set{

//為屬性相關(guān)的私有變量賦值

}

}

例子:

public class Student{

string _name; //聲明私有字段

public string Name{

get{

return _name

}

set{

_name = value;

}

}

}

Student stu = new Student();

stu.name = "屬性";

//------set索引器可以進(jìn)行判斷,改寫(xiě)代碼如下

set{

if(value=="屬性"){

_name = "你是輸入的是屬性,符合要求"

}else{

_name = "你輸入的非法";

}

}

以上看出在使用set索引器為屬性賦值時(shí),可以對(duì)賦值的數(shù)據(jù)進(jìn)行判斷,提高安全性.

★★★★自動(dòng)屬性

當(dāng)屬性訪問(wèn)器中不需要其他邏輯時(shí),自動(dòng)實(shí)現(xiàn)的屬性可以使屬性聲明變得更加簡(jiǎn)潔.

一旦在類中聲明了自動(dòng)屬性,那么編譯器將創(chuàng)建一個(gè)私有的匿名后備字段,但是這個(gè)私有字段只能通過(guò)屬性的get和set訪問(wèn)器進(jìn)行訪問(wèn).

自動(dòng)屬性必須同時(shí)聲明get和set訪問(wèn)器.若要穿件只讀自動(dòng)屬性,必須在set訪問(wèn)器前加private關(guān)鍵字.

聲明:

public class Student

{

public int Age{

set;

get;

}

}

Student stu = new Student();

stu.Age = 15;

//感覺(jué)自動(dòng)屬性沒(méi)什么用!

★★★★構(gòu)造函數(shù)

構(gòu)造函數(shù)具有與類相同的名稱,他通常初始化新對(duì)象的數(shù)據(jù)成員.在類中不帶參數(shù)的構(gòu)造函數(shù)為類的默認(rèn)構(gòu)造函數(shù),除非類是static(即靜態(tài)類)的,否則C#編譯器將為無(wú)構(gòu)造函數(shù)的類提供一個(gè)公共的默認(rèn)構(gòu)造函數(shù),一便該類可以實(shí)例化.無(wú)論何時(shí),只要使用new關(guān)鍵字實(shí)例化對(duì)象,不提供參數(shù)就會(huì)調(diào)用默認(rèn)構(gòu)造函數(shù).

注意: 如果構(gòu)造函數(shù)設(shè)置了私有構(gòu)造函數(shù)(使用private關(guān)鍵字),那么該類不能被實(shí)例化.

如果聲明的構(gòu)造函數(shù)帶有參數(shù),那么我們?cè)趯?shí)例化時(shí)也必須提供相應(yīng)的參數(shù),否則會(huì)出錯(cuò).但是同時(shí)有聲明了不帶參數(shù)的構(gòu)造函數(shù),就調(diào)用該構(gòu)造函數(shù),也就是說(shuō)的重載.

構(gòu)造函數(shù)的特征:

1.類的構(gòu)造函數(shù)函數(shù)名與類名相同

2.構(gòu)造函數(shù)沒(méi)有返回值

3.一般情況構(gòu)造函數(shù)為public

★★★★對(duì)象初始化器

對(duì)象初始化器(Object Initializers)和集合初始化器(Collection Initializers)就是簡(jiǎn)化代碼,讓本來(lái)幾行才能寫(xiě)完的代碼一行寫(xiě)完.

作用:可以在創(chuàng)建對(duì)象時(shí)向?qū)ο蟮娜魏慰稍L問(wèn)的字段或?qū)傩再x值.

例子:

class Student{

public string name;

public string sex{get; set;} //自動(dòng)屬性

}

Student stu = new Student{name = "名字",Sex = "男"}; //使用{}以;結(jié)束

Student stu = new Student{Sex = "男"}; //也可以只為其中一個(gè)字段賦值

★★★★析構(gòu)函數(shù)

在C#中很少使用析構(gòu)函數(shù),但是,當(dāng)應(yīng)用程序瘋長(zhǎng)窗口,文件,網(wǎng)絡(luò)連接等這類非托管資源時(shí),應(yīng)當(dāng)使用析構(gòu)函數(shù)釋放這些資源.

1.不能再結(jié)構(gòu)中定義析構(gòu)函數(shù),只能對(duì)類使用析構(gòu)函數(shù)

2.一個(gè)類只能有一個(gè)析構(gòu)函數(shù)

3.無(wú)法繼承或重載析構(gòu)函數(shù)

4.無(wú)法調(diào)用析構(gòu)函數(shù),他們被自動(dòng)調(diào)用

5.析構(gòu)函數(shù)沒(méi)有修飾符,也沒(méi)有參數(shù)

例子:

public class Student{

~Student(){

//和類名相同,前面加~符合

}

}

★★★★readonly關(guān)鍵字

readonly修飾符只能用于字段(不能用于局部變量),只能在構(gòu)造函數(shù)和聲明中賦值.

例:

public class RendKey{

public readonly string Name;//聲明沒(méi)有賦值,只能在構(gòu)造函數(shù)中進(jìn)行賦值

public readonly string Age = 15; //聲明時(shí)賦值(正規(guī)書(shū)寫(xiě)格式首字符大寫(xiě))

}

與const修飾符的區(qū)別

1.readonly修飾的字段即使在聲明時(shí)賦值了也可以在構(gòu)造函數(shù)中對(duì)其進(jìn)行更改. const修飾符聲明時(shí)必須賦值,以后任何情況下都不允許更改.readonly修飾符即可以是實(shí)例字段也可以是靜態(tài)字段.

2.將readonly應(yīng)用于一個(gè)數(shù)組,不會(huì)凍結(jié)數(shù)組的內(nèi)容.它只會(huì)凍結(jié)數(shù)組中的元素?cái)?shù)量,因?yàn)楝F(xiàn)在無(wú)法將只讀字段重新賦值為一個(gè)新的實(shí)例,數(shù)組中的元素仍然是可寫(xiě)的.

★★★★類的繼承

類了除了繼承于類還可以繼承于接口,C#中類只能繼承一個(gè)類,多重繼承使用繼承多個(gè)接口來(lái)實(shí)現(xiàn).

子類從父類中繼承了所有非私有數(shù)據(jù)和行為(屬性,方法),可以說(shuō)子類是對(duì)父類的擴(kuò)展,但是構(gòu)造函數(shù)和析構(gòu)函數(shù)是不會(huì)被繼承的.

語(yǔ)法格式:

public class BaseClass{

//父類

}

public class MyClass : BaseClass{

//子類

}

★★★★虛方法

在一個(gè)基類中,使用virtual修飾符修飾方法,屬性,索引器或事件聲明,那么他們就可以在派生類中被重寫(xiě).使用

virtual關(guān)鍵字在基類中修飾的方法,就是平常所說(shuō)的虛方法.在派生類中使用override關(guān)鍵字重寫(xiě)虛方法.

注意:成員字段和靜態(tài)方法都不能聲明為virtual,因?yàn)檫@個(gè)概念只對(duì)類中實(shí)例成員有意義.

class Person {

public virtual void Work(){

Console.WriteLine("這是一個(gè)虛方法");

}

}

class Student : Person{

public override void Work(){

Console.WriteLine("通過(guò)override關(guān)鍵字重寫(xiě)Work虛方法");

}

}

Student stu = new Stutent(); //實(shí)例化Student類

stu.Work();

★★★★調(diào)用方法的基類版本

在派生類中,可以使用base關(guān)鍵字訪問(wèn)基類成員,base關(guān)鍵字指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)用調(diào)用的基類構(gòu)造函數(shù),但

是不能在靜態(tài)方法中使用base關(guān)鍵字.

1.關(guān)鍵字用于從派生類中訪問(wèn)基類的成員:

2.調(diào)用基類上已被其他方法重寫(xiě)的方法。

3.指定創(chuàng)建派生類實(shí)例時(shí)應(yīng)調(diào)用的基類構(gòu)造函數(shù)。

4.基類訪問(wèn)只能在構(gòu)造函數(shù)、實(shí)例方法或?qū)嵗龑傩栽L問(wèn)器中進(jìn)行。

★★★★隱藏方法

在派生類中,使用new關(guān)鍵字可以顯示隱藏從基類繼承的成員.若要隱藏繼承的成員,請(qǐng)使用相同名稱在派生類中

聲明該成員,并用new修飾符修飾它,該成員就是獨(dú)立于基類的方法.

例子:

class Person{

public string name = "小王";

public string sex ="男";

public void WriteInfo()

{

Console.WriteLine("人員信息:姓名{0},性別:{1}",name,sex);

}

}

class Student : Person

{

new public void WriteInfo(){

Consol.WriteLine("學(xué)生信息:姓名{0},性別:{1}",name,sex);

}

}

Student s = new Student();

s.WriteInfo();//這里調(diào)用子類的WriteInfo()方法

★★★★C#中重寫(xiě)父類方法的幾種情況

關(guān)鍵字:virtual、abstract、override、new。

1. virtual:標(biāo)識(shí)可能但不是必須被子類重寫(xiě)的方法,父類必須給出默認(rèn)實(shí)現(xiàn),子類可以重寫(xiě)(使用

override,new,或無(wú)特殊標(biāo)識(shí)的普通方法),也可以不重寫(xiě)該方法。

2. abstract:標(biāo)識(shí)必須被子類重寫(xiě)的方法,父類并不給出實(shí)現(xiàn),子類必須用override關(guān)鍵字重寫(xiě)該方法。

3. override:標(biāo)識(shí)重寫(xiě)父類的方法,父類方法必須是用abstract,virtual,override之一聲明,運(yùn)行時(shí)將根

據(jù)  實(shí)例的類型而不是引用的類型調(diào)用對(duì)象的方法。

4. new:標(biāo)識(shí)重寫(xiě)父類的方法,父類方法可以用virtual、override、new之一聲明,也可以是沒(méi)有特殊標(biāo)識(shí)的

普   通方法,運(yùn)行時(shí)會(huì)根據(jù)引用的類型選擇調(diào)用父類還是子類的方法,重寫(xiě)父類方法時(shí),使用new關(guān)鍵字與使

用沒(méi)   有特殊標(biāo)識(shí)的普通方法是等效的,但是后者會(huì)給出一個(gè)編譯警告。

★★★★抽象類和抽象方法

抽象類是一種特殊的類,他可以擁有數(shù)據(jù)成員,可以是其他類的子類.但是和具體類(非抽象類)不同,抽象類的某

些行為故意留給其子類來(lái)定義.

在C#中使用abstract關(guān)鍵字聲明抽象類.abstract關(guān)鍵字可以和方法,屬性,索引器及事件一起使用.標(biāo)記為抽象

或包含在抽象類中的成員必須通過(guò)從抽象類的子類中在實(shí)現(xiàn).

注意:抽象類不能夠?qū)嵗?需要通過(guò)子類重寫(xiě)抽象類中的成員方法,然后實(shí)例化子類來(lái)實(shí)現(xiàn).

抽象方法也是由關(guān)鍵字abstract聲明,抽象方法需要使用;號(hào)結(jié)束,這和常規(guī)定義的方法塊不同.抽象方法只能在

抽象類中聲明.

例子:

class Person{

public abstract void Work();  //定義了一個(gè)抽象類

}

class Student{

public override void Work(){//使用override關(guān)鍵字重寫(xiě)抽象類

Console.WriteLine("重寫(xiě)抽象方法");

}

}

Student s = new Student();

s.Work();

★★★★密封類和密封方法

在應(yīng)用程序中,有時(shí)候開(kāi)發(fā)人員編寫(xiě)的類,并不希望被繼承或沒(méi)有必要被繼承,為此C#提出了密封類的概念,密封

類在聲明中使用sealed關(guān)鍵字.這樣就可以防止類別其他類繼承.

密封類可以組織其他開(kāi)放人員在無(wú)意中繼承,而且密封類可以起到運(yùn)行時(shí)優(yōu)化效果.

如果視圖將一個(gè)密封類作為其他類的基類,C#將提示出錯(cuò).密封類不能同時(shí)又是抽象類,因?yàn)槌橄箢愂切枰焕^承

的,可以說(shuō)sealed關(guān)鍵字不能喝abstract關(guān)鍵字一起使用.

密封類不可能有派生類,如果密封類實(shí)例中存在虛成員函數(shù),該成員方法可以轉(zhuǎn)化為非xude ,方法關(guān)鍵字將不再

生效.

class Person{

public virtual void Work(){

Console.WriteLine("聲明封閉類時(shí)需要繼承一個(gè)父類,不能直接聲明");

}

}

sealed class Student : Person //使用sealed關(guān)鍵字聲明封閉類

{

public sealed override void Work(){

Console.WriteLine("使用sealed關(guān)鍵重寫(xiě)父類的方法");

}

}

Student s = new Student();

s.Work();

★★★★部分類

★★★★接口

在應(yīng)用程序中,接口就是一種規(guī)范,接口封裝了可以被多個(gè)類繼承的一些公共部分.但是接口不能包含字段.聲明

接口使用interface關(guān)鍵字,接口中的成員默認(rèn)是public,所以在聲明成名方法時(shí)不需要加public關(guān)鍵字.接口中

的成員必須是非靜態(tài)的.

例子:

interface Person{

//string name; 如果包含字段,程序?qū)?huì)報(bào)錯(cuò).

void Work();

}

class Student : Person{

public void Work(){

Console.WriteLine("這個(gè)類繼承與接口類Person");

}

}

Student s = new Student();

s.Work();

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開(kāi)啟,新人活動(dòng)云服務(wù)器買多久送多久。

網(wǎng)站標(biāo)題:[C#學(xué)習(xí)筆記](méi)面向?qū)ο?創(chuàng)新互聯(lián)
地址分享:http://muchs.cn/article48/pcjhp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)外貿(mào)網(wǎng)站建設(shè)、建站公司Google、網(wǎng)站制作小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設(shè)