C#拾遺(一)

來源:互聯網
上載者:User

標籤:io   os   使用   ar   資料   sp   c   on   代碼   

           聲明

隨意寫的一些筆記,主要給自己看的,說的有些不嚴謹,有些表達比較簡略,大概就這意思就行了。

內容

                                                                字串,繼承,三種參數修飾符,

1.訪問類的欄位用this

eg: this.name = name;      //後一個name是形參

2.字串的常見操作

1   .Length   //字串的長度屬性,故無括弧

2   byte []bystr = System,Text.Encoding.Default.GetBytes(str);

3    字串截取    str.Substring(0,2);      //第一個是起始位置,第二個是截取位元

4   指定位置為空白字元   

char.IsWhiteSpace(str,2);    同理還有 IsPuctuation等

5   str.Replace(str1,str2);     將str中的str1子串替換成str2

6.  strTrim();    清除空格

7.  Split的分割    

string []arr =str.Split(‘,‘);

string []arr = str.Split(new char[2]{‘a‘,‘b‘};

string []arr = Regex.Split(str, "js", Regex.Options.IgnoreCase);

8. 通過Tostring()選擇字串格式

.ToString("e")     科學計算

.ToString("x")    16進位

...

9   擷取隨機數

Random r = new Random();

然後不斷的用.Next()擷取隨機數,很簡單吧~~

r.Next(a,b)    //a~b的隨機數

r.Next(10)和r.Next()%10是一樣的

 

10 字串與整數之間的轉換

Int32.Parse(str);   //為null時會拋出異常

Int32.TryParse(str, out myint);  //返回true或false來說明解析是否成功,解析錯誤,則out調用方法得到零值。                                              Convert.ToInt32(str);  //在null時不拋出異常,返回零

                                                               繼承

1.在子類中通過base.函數名 來調用基類函數成員

eg:   base.sayHello();

子類的執行個體可以通過顯示類型轉換,轉換成父類的執行個體,進而調用父類的成員。

2.  子類的方法名與父類的方法名重名時,子類中需要用new來隱藏掉父類的成員方法。因為子類會從父類繼承到public的方法成員,不用new覆蓋的話,編譯器會蒙圈的~~

3. 用sealed來密封類,防止被繼承

4.抽象類別 

基類並不具體實現任何執行代碼,只是做個定義,具體實現在衍生類別中重寫(override),另一種方法是不打類聲明為抽象類別,但基類裡也不寫具體實現,可以把基類的方法聲明為虛函數(virtual)

方法一:

public abstract class A

{

public abstract void sayHello();   //不止類要寫abstract,這裡也要寫(⊙o⊙)哦

}

public class B:A

{

public override void sayHello()

{  

Console.WriteLine("ww");

}

}

方法二:

去掉class A前的abstract,同時將void sayHello前的abstract 改成virtual。

由此可見,override的函數在基類中必須為abstrac或是virtual。

4.多重繼承

C#不支援多重繼承,但C#允許類派生於多個介面,只不過多個父類的class改成interface罷了。。。

但是對於子類介面實現,有兩個條件

1.兩個介面的同名方法的實現,必須帶上介面名

如:void A.Common(){..};

void B.Common(){..}‘

2.兩個介面的不同名稱的方法,必須冠以"public"

如:public void A1();

public void B1();

eg:

interface A

{

void A1();

void Common();

}

interface B

{

void B1();

void Common();

}

class Child:A,B

{

public void A1(){..};

void A1.Common(){..};

public void B1(){..};

void B1.Common(){..};

}

具體執行個體化時:

Child chd = new Child();

((A)chd).Common();

((B).chd).Common();

chd.A1();

chd.B1();

 

分析:其實上面兩個規則應該很好理解:

對於同名的,那肯定是要說明是誰的方法啊,否則子類哪知道呢~~,不帶存取修飾詞,那預設是private,好讓子類只能得到兩個介面的同名函數中的一個~~。    

對於不同名的,那必須為public啊,好讓子類繼承啊~~

一些小技巧

[email protected]的作用

1.使用在字串前面,讓"\"變成一般字元而非逸出字元

eg:string filePath = @"C:\text\text1";

2.表示跨行字串

string multiRows = @"Line1

Line2

Line3";    //蠻好的,省的一行字串寫太長不方便看

3.在系統保留的關鍵詞面前加上,可以當做一般字元使用

2.using 略~~

參數修飾符

1.params

parms是用來修飾數組的,一個函數中最多隻能有一個可變參數】

eg:public static void UseParams(params int []list)

{

...

}

傳參時,可以UseParams(1,‘a‘,3)或是 int []array = new int[3]{1,2,3}; Useparams(array);

2. out 和ref

out和ref差不多,都是傳引用。就如C++中的,普通傳參,形參的改變不會影響到實參。如果是指標或引用做為參數的話,就會形參的改變影響到實參。而

out和ref就是引用,用法有些許不同罷了。

區別:

1.out的實參不需要初始化,初始化也沒用,傳參是初始化的實參會被清空,只剩下地址,沒有資料,並且在函數結束之前必須賦值!

而ref的一定要初始化。

2.其實out一般用來獲得方法的多個傳回值,這裡的傳回值並不是return .., 而是,比如  

static void Split(String name, out string firstnames, out string lastname)

{

int i = name.LastIndexOf(‘ ‘);

firstNames = name,Substring(0,i);   //第一個傳回值

lastName = name.Substring(i+1);       //第二個傳回值

}

3.ref一般是用來獲得函數的一個傳回值。並且一定要初始化。

注意點:

1.定義和調用時都要寫out/ref

2.二者都能和普通傳參構成重載,但相互之間不能構成重載(想想也差不多是這麼回事吧~~)

                           

 

C#拾遺(一)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.