**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 操作符建立引用型別實力的時候 該引用型別...