C 基本知識零散總結

2021-09-09 03:34:13 字數 4091 閱讀 4064

c#基本知識零散總結

類的屬性:(property)

c#中定義屬性使用的語法

public

string

someproperty

set }

get訪問器不帶引數,且必須返回屬性宣告的型別。

唯讀屬性:在屬性定義中省略set訪問器,就可以建立唯讀屬性。

只寫屬性:在屬性定義中省略get訪問器,就可以建立只寫屬性。(此方法不推崇)

建構函式:如果沒有提供任何建構函式,編譯器會在後台建立乙個預設的建構函式。類名和函式名相同。建構函式的過載遵循與其他方法相同的規則。可以為建構函式提供任意多的過載。

靜態建構函式:這種建構函式只執行一次。static 類名

靜態建構函式沒有訪問修飾符,不能帶任何引數,乙個類只能有乙個靜態構造方法。

c#中的var關鍵字,表示隱式型別化的變數。

匿名型別:var和new關鍵字同時使用。

c#中的結構,在許多方面看做是縮小了的類。他們基本上與類相同,更適於把一些資料組合起來的型別。

結構與類的區別:

1、結構是值型別,不是引用型別。

2、結構不支援繼承。

3、結構的建構函式的工作方式有一些區別。

4、使用結構可以指定字段如何在記憶體中布局。

雖然結構是值型別,但常常可以把它當做類來處理。

為結構定義建構函式的方式與類定義建構函式的方式相同,但不允許無參的建構函式。

部分類:關鍵字partial,允許把類、結構或介面放在多個檔案中。一般的用法就是partial關鍵字放在class、struct、或inte***ce等關鍵字的前面。

靜態類:關鍵字static,靜態類在功能上與使用私有靜態建構函式建立的類相同。不能建立靜態類的例項。

object方法:

system.object方法:

1、tostring()是獲取物件字串表示的一種便捷方式。

2、gethashtable()

3、equals()

4、finalize()

5、gettype()

6、memberwiseclone()

實現繼承:表示乙個類派生於乙個基型別,擁有該基型別的所有成員欄位和函式。在實現繼承中,派生型別的每個函式採用基型別的實現**,除非在派生型別的定義中指定重寫該函式的實現**。在需要給現有的型別新增功能,或者許多相關的型別共享乙個重要的公共功能時,這種型別的繼承是非常有效的。

宣告乙個類派生於另乙個類,用:分割。

class myclass:baseclass 

介面繼承:表示乙個型別只繼承了函式的簽名,沒有繼承任何實現**。在需要指定該型別具有某些可用的特殊性時,最好使用這用型別的繼承。

用逗號分隔基類和介面

c#不支援多重實現繼承,但可以派生多個介面。

抽象類和抽象函式

用abstract宣告,抽象類不能例項化,抽象函式沒有執行**,必須在費抽象的派生類中重寫。如果型別包含抽象函式那該類也是抽象的。

abstract class building

介面:inte***ce

宣告介面在語法上與宣告抽象類完全相同,但不允許提供介面中任何成員的執行方式。一般情況下,介面中只能包含方法、屬性、索引器和事件的宣告。

介面不能有建構函式或字段。介面的成員總是公共的

介面可以彼此繼承,繼承的方式與類相同

array類:是乙個抽象類,不能使用建構函式建立陣列。

使用靜態方法creatinstance()建立陣列

//

使用array建立陣列

array intarray1 = array.createinstance(typeof(int), 5

);

for(int i = 0; i < 5; i++)

for(int i = 0; i < 5; i++)

2、強制將建立的陣列轉換成int陣列

//

將自己建立的陣列強制轉換成宣告為int陣列

int intarray2 = (int)intarray1;

將輸入的數新增到陣列中使用方法是getvalue();

3、複製陣列可用方法clone();

clone()方法會建立乙個新的陣列,copy()方法只傳送了階數相同、有足夠元素空間的已有陣列。

//

轉殖乙個新的新的陣列

int intarray3 = (int)intarray1.clone();

4、排序,sort方法實現了氣泡排序。需要在陣列中實現icomparable介面。

array類實現了ieumerable、icollection和ilist介面,以訪問和列舉陣列中的元素。

關於運算子

is運算子可以檢查物件是否與特定的型別相容。表示是否為該型別

as運算子用於執行引用型別的顯式型別轉換。如果要轉換的型別與指定的型別相容,轉換就會成功進行。如果不相容,as運算子就會返回null。

sizeof運算子可以確定堆疊中值型別需要的長度(單位是位元組);

typeof運算子返回乙個表示特定型別的system.type物件。

關於資料轉換

隱式轉換只能從較小的向較大的轉換。

顯式轉換類似以強制轉換。

運算子的過載

//

定義乙個結構,包含成員字段、建構函式、和乙個tostring的重寫

struct

vector

public vector(vector rhs)//

建構函式

//方法重寫

public

override

string

tostring()

}

提供了兩個建構函式,通過傳遞每個元素的值,或者提供另乙個複製其值的vector,來指定向量的初始值。第二個建構函式帶乙個vector引數,通常稱為複製建構函式。

//

定義乙個結構型別

vector vect1, vect2, vect3;

vect1 = new vector(3.0, 3.0, 1.0

); vect2 = new vector(2.0, -4.0, -4.0

); vect3 = vect2 +vect1;

console.writeline(

"vect1=

" +vect1.tostring());

console.writeline(

"vect2=

" +vect2.tostring());

console.writeline(

"vect3=

" + vect3.tostring());

委託:當要把方法傳遞給其他的方法時,需要使用委託。

定義為:delegate void intmethodinvoker(int x);

集合list和arraylist是和陣列相當的集合類。

1、集合的初始化器

listintlist=new list();

liststringlist=new list();

2、新增元素add()方法

listintlist=new list();

intlist.add(1);

intlist.add(2);

list

stringlist=new list();

stringlist.add(

"one");

stringlist.add(

"two

");

addrange()方法可以一次給集合新增多個元素。

3、插入元素insert(),在指定位置插入元素

5、刪除元素removeat(),刪除指定位置的元素

C 零散知識

全域性變數的初始化時機 c 是在編譯期初始化,c 是在程式執行時,main 函式之前初始化.不使用中間變數實現 strlen int mystrlen const char str c 語言函式引數入棧順序為從右至左。具體原因為 c 方式引數入棧順序 從右至左 的好處就是可以動態變化引數個數。通過棧...

SAS零散知識總結

1,變數名命名規範 以字母或者下劃線開始,可包含字母 下劃線 數字,且不超過32個字元 2,infile用於讀取外部資料檔案,一般於filename 和libname使用者一致,但路徑要精確到檔名 txt dat等 連用。3,input語句用於定義字段變數,可用於讀去外部檔案 infile card...

ClickHouse 零散小知識總結

1.clickhouse jdbc使用 google 的 cityhash128 演算法實現,可select cityhash128 檢視 2.python 連線 from clickhouse driver import client client client host 127.0.0.1 da...