一、我們什麼時候建立strucut?什麼時候使用類,參考以下兩點:
1)當c#的預定義型別,比如int ,double等不能滿足我們的需求的時候,比如我們想定義乙個座標,該座標有x,y,z,並且都是double型別,那我們就可以考慮使用struct或者class,但是由於stuct所佔的記憶體比較小時具有效能的優勢,所以定義在小於16位元組的型別時,我們使用struct,大於16位元組時使用class(參考《c#本質論》);這裡還有乙個問題,我們如何知道乙個結構所佔的記憶體有多大呢?這裡使用sizeof
struct angle
public double degrees
public double minutes
}呼叫:
unsafe
2)結構還可以包含 建構函式、 常量、 字段、 方法、 屬性、 索引器、 運算子、 事件和 巢狀型別,但如果同時需要上述幾種成員,則應當考慮改為使用類作為型別(參考《msdn》)。
struct angle
public
double degrees
public
double minutes
public
double seconds
}
呼叫:
angle angle=
newangle
(100
,200
,300);
angle.degrees =
400;
angle.minutes =
400;
angle.seconds =
100;
2、列舉
當我們為了增加**的可讀性時使用列舉,未使用列舉的**:
int country=0;
switch
(country)
使用後:
列舉的定義:
enum country
列舉的使用:
country country=country.china ;
switch
(country)
列舉陣列之間的轉換
enum country1
enum country2
country1[
] country=
(country1)
(array)
newcountry2[10
];//必須將乙個列舉先轉換為array型別,再僅從轉換。
列舉和字串之間的轉換
1)列舉轉字串;
filestatus filestatus = filestatus.hidden;
string filestatusstr = filestatus.
tostring()
;
2)字串轉列舉(使用enum.parse來實現轉換)
filestatus newfilestatu;
newfilestatu = enum.
tryparse
(filestatusstr,
out newfilestatu)
? newfilestatu :filestatus.readandwrite ;
將列舉作為位標誌
[
flags
]enum filestatus
資料結構專題
一.並查集 主要操作 1.合併兩個不相交集合 2.判斷兩個元素是否屬於同一集合 時間複雜度 o n n 其中 x 對於x 宇宙中原子數之和,x 不大於4,事實上,路經壓縮後的並查集的複雜度是乙個很小的常數。模板題 include includeusing namespace std for poj ...
Shell 迴圈結構專題
在shell 101中已經介紹了for迴圈結構,本文做乙個迴圈結構體的總結,補充while,until 兩個迴圈體,以及break,continue關鍵字說明。let s get started.1.for 迴圈 shell 中的for迴圈分為c語言風格的經典for迴圈結構,以及類似python中的...
c語言專題
本篇作為乙個引子,領著大家梳理c語言中難點或容易忽視的知識點,知識點以專題形式展開。專題一 結構占用記憶體長度 在linux windows上執行下面一段程式,你能總結出struct記憶體對齊規則嗎?struct ta struct tb struct tc printf size ta d tb ...