C 學習記錄

2021-10-01 03:59:50 字數 2846 閱讀 3515

1、屬性與字段(成員變數)

在c#中,我們可以毫無限制的訪問公有字段,但是在一些特定的場合,我們可能希望限制只能給字段賦予某個範圍的值,或者要求字段只能讀或只能寫,或者是在改變欄位時能改變物件的其他一些狀態,這些單靠欄位是無法做到的,於是就有了屬性,屬性包括兩個塊:get 和 set ,set 塊負責屬性的寫入工作,get 塊負責屬性的讀取工作。

屬性的本質就是方法,屬性本身又包括賦值方法與取值方法

2、列舉的本質(整數序列) ;

console.

writeline

" has the value "+(

int;

//將顯示reddel has the value 2

3、this關鍵字(指代當前**所在的物件)

public

partial

class

formmain

:form

private

void

formmain_load

(object sender,

eventargs e)

}

4、c#的命名規範

pascal命名法與駝峰命名法

c#中公有變數/屬性/私有方法/公有方法都是用pascal

私有變數使用駝峰命名法

pascal命名法:單字之間不以空格斷開或連線號(-)、底線(_)鏈結,第乙個單詞首字母採用大寫字母;後續單詞的首字母亦用大寫字母,例如:firstname、lastname。每乙個單詞的首字母都採用大寫字母的命名格式,被稱為「pascal命名法」,源自於pascal語言的命名慣例,也有人稱之為「大駝峰式命名法」(upper camel case),為駝峰式大小寫的子集。

駝峰命名法:駱駝式命名法就是當變數名或函式名是由乙個或多個單詞鏈結在一起,而構成的唯一識別字時,第乙個單詞以小寫字母開始;從第二個單詞開始以後的每個單詞的首字母都採用大寫字母,例如:myfirstname、mylastname,這樣的變數名看上去就像駱駝峰一樣此起彼伏,故得名。

5、string.format

6、drawlines與drawpolygon的區別

前者是把一系列點連線起來,不一定閉合,只是把給出的點按順序串到一起;

後者是把一系列點連線起來,並且自動把最後乙個點和第乙個點連在一起形成封閉圖形。

public

void

draw

(graphics grp)

; grp.

drawlines

(pen, points)

;}

public

void

draw

(graphics grp)

; grp.

drawpolygon

(pen, points)

;}

上述兩組**形成的圖形都是三角形

7、關於型別轉換

1) (int)變數名[強制型別轉換]:

該轉換方式主要用於數字型別轉換,從int型別到long,float,double,decimal型別,可以使用隱式轉換,但是從long型別到int型別就需要使用顯式轉換,也就是該資料型別轉換方式,否則會產生編譯錯誤。

該方式對於浮點數會做無條件捨去,失去精確度

當然,該方式也可以進行object到int得轉換,但是,object的值要賦予int型別的值,否則會產生編譯錯誤,而且object為null時也會出錯。

最後切忌的一點,千萬不要用來處理char型別到int型別的轉換,否則傳回的的值是ascii**,而並不是你想要的值。

2) int.parse(string型別變數名)

該方式是將數字內容的字串轉為int型別,如果字串內容為空或者null時,則丟擲argumentnullexception異常;如果字串內容不是數字,則丟擲formatexception異常;如果字串內容所表示數字超出int型別可表示的範圍,則丟擲overflowexception異常。

使用該方法切忌的一點就是只能處理字串內容,而且字串內容只能在int型別可表示的範圍之內。

3) int.tryparse(string s, out int result)

該方式也是將數字內容的字串轉為int型別,但是該方式比int.parse優越的地方,就是它不會出現異常。如果轉換成功返回 true,如果轉換失敗返回 false。很明顯,最後乙個引數為輸出值,如果轉換失敗,輸出值為 0;如果轉換成功,則輸出相應的值。
4) convert.toint32

該方式不僅可以將字串轉為int型別,還可以將其它型別的值轉成int型別。變數若為object或string型別,當其值為null時,會傳回0,不會造成程式錯誤,但是若此string型別的值為string.empty,在轉型成int時,仍會造成程式錯誤。

該方式對於浮點數會做四捨五入。

該方式同強制轉換一樣,不能用來處理char型別,否則傳回的是ascii**

8、winform窗體控制項布局

a、最不好的布局技術:自己實現控制項的x、y、width、height

b、設計成**中的控制項的anchor屬性賦值,為控制項的dock屬性賦值

布局控制項:tablelayoutpanel,flowlayoutpanel,splitercontainer,splite

9、陣列/集合/字典(鍵/值)

array list dictionary

10、物件轉換

a、強制型別 轉換失敗報錯

b、as轉換 轉換失敗物件為空 只支援引用型別

值型別與引用型別

C 學習記錄

由於之前寫c c 程式時,動不動就容易報錯,也就沒繼續用,一直覺得c 很難。最近在學習機器學習時,用到了乙個c 神經網路庫,並且在菜鳥教程中看到了c 的教程,於是學了一下,發現根本沒有想象中的那麼難,可能也是這個教程講的比較好吧。現在把一些學到的比較重要的點記錄一下吧!1.ifndef 突然覺得在標...

C 學習記錄

原創 主要是c 和c 不同的地方,會寫一下,流程控制什麼的都差不多,比較適合c 轉c 的人看 以前沒有系統的學過c 現在補一下,以前完全是為了看懂別人的 稍微看一下,也沒有太想在這方面下功夫,學一點是一點,目標是能修改別人的c 服務端程式。一.包含 包含原理上什麼檔案都能包含進來,但是一般只包含.c...

C 學習記錄

reserve和resize的區別 reserve是容器預留空間,但並不真正建立元素物件,在建立物件之前,不能引用容器內的元素,因此當加入新的元素時,需要用push back insert 函式。resize是改變容器的大小,並且建立物件,因此,呼叫這個函式之後,就可以引用容器內的物件了,因此當加入...