c#基本知識零散總結類的屬性:(property)
c#中定義屬性使用的語法
publicstring
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...