C 的引用型別 3

2021-07-24 14:38:02 字數 3593 閱讀 7756

**object、string、dynamic**
//c#的字元型別的宣告,且賦值

string s = "lihaoyang";

string s1 = "zhanghaiqi";

//使用@ 不需要轉義

string at = @"c:\lihaoyang.cs";

//不使用@就需要加 \ 來進行轉義

string noat = "c:\\lihaoyang.cs";

//字串合併操作

s1 +=s;

//拆分字串 返回指定下標的字元

char char1 = at[2];

//判斷兩個字串的值是否相等 返回boolean

console.writeline(at ==noat);

//判斷兩個字串的記憶體位址是否相同 返回boolean

console.writeline((object)at == (object)noat);

//判斷字串是否包含某個字元 返回boolean

at.contains("lihao");

//判斷字串的某個字元首次出現的位置 返回int

at.indexof("li");

//獲取字串的長度

console.writeline(at.length);

stringbuilder的使用

1.為什麼要使用stringbuilder?

在大量的字串的操作時,使用stringbuilder

好處是:1.不需要限定長度,在處理好後再通過tostring轉回 string型別 即可。

2.大量字串操作的時候,對記憶體比string小。

2.stringbuilder的宣告

stringbuilder builder =new stringbuilder();
3.stringbuilder的使用

/*

下面的字串和並 和 s1 += s;的區別

* 使用builder 只是分配一次記憶體空間,然後在後面追加

* * s1 += s; 則是分配了兩次記憶體空間,記憶體開銷大

*/console.writeline(builder);

/*

格式化字串:就是是按照指定的格式顯示

* 書寫格式:

* 第一部分 "hello" 規定了格式的名稱以及引數的個數

* * 第二部分 "hello","world"。。。 上面規定了幾個引數,就

* 寫有幾個雙引號,裡面填寫引數值

*/console.writeline(builder);

//輸出格式

hello:helloworld

class 的宣告

//class的預設修飾符是 internal(同一命名空間可以訪問)

class person

set }/*

* 在建立class的時候,

* 會預設建立乙個無參的建構函式

*/public

person()

/*重寫無參建構函式,

*/public

person( int age)

/*方法預設的修飾符是

* private(只能class內部進行訪問)

* 所有要加上public 這樣外部才可以訪問

*/public

intgetage()

/*建立乙個靜態方法

* 靜態方法只能通過類去呼叫,

* 無法使用例項化後的物件呼叫。

* * 因為static 的變數或方法是儲存在類上的

* 而不是static 的變數或方式是儲存在例項化後的物件上的

*/public

static

intgetfive()

}

class 的呼叫

class

program

}

inte***ce(介面) 的宣告

inte***ce

isuper

inte***ce 的實現

—命名規則:通常是以大寫的 「i 」 開頭 表示他是乙個 inte***ce 類

//繼承介面

class person : isuper

}

abstract 的宣告

abstract class man 

//抽象方法

public

abstract

void

getabstract();

}

abstract 的實現

class person :man,isuper

}

個人筆記

類繼承 介面或抽象類 的方法:

class

person : isuper

ps:1.格式說明

person 類名

isuper 介面名

: 繼承符

類 繼承 多個 介面或 抽象類 的寫法:

class

person : isuper,man {}

vs快捷鍵 ctrl +shift + b 編譯**

f5 執行**

abstract(抽象類) 和 inte***ce(介面)的區別?

1.先說說 abstract

a.抽象類的宣告是使用 abstract關鍵字+class+類名 

b.adstract 類不能被例項化

c.adstract 類 至少有乙個抽象方法,

但也可以包含正常方法 和 成員變數...

d.繼承抽象類的 類,只需要實現抽象方法,其他

正常的方法和 成員變數不需要重寫也可以實現繼承。

e.抽象類的抽象方法需要使用 override 關鍵字

只需要重寫抽象方法。

正常的方法和成員變數不需要重寫。

2.在說說 inte***ce

a.介面的宣告是 inte***ce關鍵字+介面名 

b.介面也不能被例項化

c.介面只能有方法

b.介面 被繼承後 類必須實現 介面內 的所有方法

C 引用型別

1 靜態記憶體和動態記憶體分別對應棧記憶體和堆記憶體嗎?那麼值型別和引用型別的記憶體分配是怎樣的?堆記憶體就是 執行時動態分配的記憶體。執行期完成 上靜態分配記憶體。引用型別的物件總是在程序堆中動態分配記憶體。對於值型別,如果某個類的例項有個值型別的字段,例如類的成員變數是值型別的,但是類 是引用型...

C 返回引用型別 指標的引用

c 返回引用型別a a 就生成了乙個固定位址的指標,並把指標帶給你 但a a 會生成乙個臨時物件變數,並把這個臨時變數給你 這樣就多了一步操作 當返回乙個變數時,會產生拷貝。當返回乙個引用時,不會發生拷貝,你可以將引用看作是乙個變數的別名,就是其他的名字,引用和被引用的變數其實是乙個東西,只是有了兩...

C 型別基礎 引用型別

上一講說了一下值型別的部分內容,雖然沒有什麼有意思的東西能吸引大家的注意 也沒啥好的 讓大家參考一下 但是樓主的水平實在有限 各位看官如果不嫌棄的話 還是看看吧 如果對你的生活或者學習有那麼一絲幫助的話 都算是樓主的萬幸 當宣告乙個引用型別變數,並使用new 操作符建立引用型別實力的時候 該引用型別...