列舉:是一種資料型別,列舉適用於取值範圍有限的資料
列舉的訪問許可權修飾符與類一致,修飾符可寫可不寫。類的預設值為interal,列舉的預設值也是interal。[訪問許可權修飾符]
enum 列舉名
列舉名遵循大駝峰命名法。
列舉一般和switch-case結合使用。eg:
1.雖然列舉中的元素的值可以相同,但是強烈不推薦這樣使用。public
enum season
class
program
}}
2.列舉元素預設的值型別是int型,可以修改為其他的整型。
語法:結構體和類基本上是一樣的//列舉
//列舉中使用冒號表示這個列舉中元素的資料型別為冒號後的型別(且只能為整型)
public
enum season:
long
class
program
}
[訪問許可權修飾符] struct 結構體名字
1.都包含字段,屬性和方法。訪問許可權都一樣。
2.都是通過關鍵字new例項化物件的
1.結構體物件在棧上開闢的空間,因此結構體是值型別,不是引用型別;而類物件在堆上開闢空間,因此類是引用型別
2.構造方法:
a.結構體中不允許寫無參構造。
b.而在結構體的有參構造中,必須要給所有的字段進行賦值
c.結構體中始終包含乙個public許可權的無參的構造方法。
3.結構體中不允許寫析構方法,只有類才可以。
4.結構體只有乙個父類叫做object,不能被其他的結構體或者類繼承,也不能繼承自其他的結構體或者類
由static修飾的類就是靜態類//寫乙個結構體
public
struct point
get}
//有參構造
public
point
(double x,
double y)
//靜態構造(和在類中觸發靜態構造的時機一致)
static
point()
//方法
public
void
test()
}public
class
program
public
static
void
change
(point p)
}
1.靜態類不能例項化物件
2.靜態類中不允許寫非靜態的成員
3.靜態類只能由乙個父類,叫object
用途:用來設計工具類
1.用來修飾類,叫做密封類,被sealed修飾的類不能被繼承//靜態類
public
static
class
arrays
}class
program
}
2.用來修飾方法,叫做密封方法,被sealed修飾的方法不能被繼續重寫,且只有override方法可以被密封//密封類
sealed
class
animal
//aniaml類被密封,dog類不能繼承
class
dog:
animal
命名空間是乙個虛擬的集合。命名空間中的元素只能是類、結構體、列舉、介面等型別。class
man:
user
}class
superman
:man
}
命名空間可以防止類名的重複,以及更好的管理類
1.例項化乙個物件
2.命名空間可以重複using space0;
//表示引用space0的命名空間
namespace space0
}namespace space1
class
bclass
program
}}
3.命名空間可以互相巢狀using space0;
//表示引用space0的命名空間
using system;
namespace space0
}//命名空間的名稱是允許重複的
//如果用多個命名空間的名字是一樣的,那麼他們是乙個命名空間
namespace space0
//報錯的原因是上面已經有了space0命名空間,兩個空間相同
}
使用關鍵字(operator)進行運算子過載。通過特定的語法,使某些運算子可以具備特殊的功能。using space2;
//表示引用space2的命名空間
using space2.space2;
//表示引用space.space2的命名空間
using system;
//命名空間可以巢狀命名空間
namespace space2
//這個命名空間的名字叫做space2.space2
namespace space2
namespace space2
}}}namespace space1
}}
√ 算術運算子(練習:過載++運算子,觀察放在變數前後有沒有區別)
× 賦值運算子都不能被過載
√ 關係運算子:如果想重寫關係運算子,那麼必須成對過載(如果過載》,必須過載<=;如果過載》,必須過載<=;如果過載==,必須過載!=;)
√ 邏輯運算子中 & | ! ^可以被過載。× 邏輯運算子中&& ||不能被過載
√ 位運算子中 & | ! ^ ~ 可以被過載
1.引數的數量一定要和運算子能夠操作的數量進行匹配
2.引數型別和返回值型別可以隨意設定,但要合情合理
public
struct point
//運算子過載(poerator),使+加號具有新的功能
//可以實現兩個point物件直接相加,得到乙個新的點
//規定必須寫public和static
public
static
point
operator+(
point p1,
point p2)
//public
static
point
operator-(
point p1)
public
static
point
operator*(
point p1,
point p2)
public
static
point
operator+(
point p1,
int a)
public
static
double
operator&(
point p1,
int a)
}public
class
program
}
C 基礎知識5
1 有參的父類建構函式 class student protected person 初始化列表 只能加在定義當中,不能寫在宣告當中 有子物件的派生類建構函式 先構造父類,再構造子物件,再構造自己。初始化列表的順序沒有關係 組合關係 聚合關係 生命週期沒有必然聯絡 部分和整體的關係 緊密 繼承關係 ...
c 基礎知識5 內聯函式
內聯函式 解釋 程式在編譯時,會將內聯函式嵌入到呼叫處,適用於功能簡單 規模較小 使用頻繁的函式。格式 inline 函式體 優點 沒有普通函式呼叫的壓棧 跳轉 返回等操作,提高執行效率 缺點 增加 量,消耗記憶體空間。使用限制 為了防止編譯器過於老舊,出現不能內聯的現象,建議對內聯函式進行如下限制...
C 基礎知識
抽象類 abstract class 一種不可以被例項化的類。抽象類中一般含有抽象方法,當然也可有具體實現。繼承類只有實現過所有抽象類的抽象方法後才能被例項化。介面 inte ce 只含有共有抽象方法 public abstract method 的類。這些方法必須在子類中被實現。反射 程式集包含模...