C 基礎之自定義型別

2021-08-02 14:30:51 字數 3254 閱讀 1390

一.命名空間

1.命名空間是資料夾,類是檔案

例如namespace

outer.middle.inner

class

class1 {}

class

class2 {}

} 命名空間中的點表示巢狀命名空間的層次結構

所以上面的**可以表示為下面的形式

namespace

outer

class

class2 {}

} 2.using指令

using指令匯入乙個命名空間

例如using

outer.middle.inner;

class

test

3.名稱作用域

在外部命名空間中宣告的名稱可以在內部命名空間內使用不合格。

在此示例中,名稱middle和class1被隱式匯入inner:

namespace

outer

namespace

inner  }}

} 要引用命名空間層次結構的不同分支中的型別,請使用部分限定名稱。

在下面的示例中,我們基於common.mybase的myclass

namespace

outer  

} namespace

mynamespace  }} 

4.名稱隱藏

如果同一型別名稱出現在內部和外部命名空間中,則內部名稱將勝出。

要引用外部命名空間中的型別,必須限定其名稱。

例如 namespace

outer

namespace

inner

class

test

} 5.重複命名空間

你可以重複命名空間宣告,只要命名空間中的型別名稱不衝突

例如namespace

outer.middle.inner

namespace

outer.middle.inner

} 6.巢狀使用指令

我們可以在命名空間中巢狀乙個using指令。

在以下示例中,class1在乙個作用域中可見,但在另乙個作用域中不可見

namespace

outer

namespace

n2 namespace

n2 // compile-time error

}7.別名型別和命名空間

匯入命名空間可能導致型別名衝突。

我們可以只匯入你需要的特定型別,給每個型別乙個別名。

例如 using

propertyinfo2 = system.reflection.propertyinfo;

class

program

整個命名空間可以進行別名,例如

using

r = system.reflection;

class

program

二.類

1.類是最常見的型別的引用型別。

最簡單的類宣告如下:

class

yourclassname

在關鍵字類之前,我們可以向類新增屬性和類修飾符。

非巢狀類修飾符是public,internal,abstract,sealed,static,unsafe和partial。

遵循yourclassname,我們可以新增通用型別引數,基類和介面。

在大括號類成員中,我們可以定義方法,屬性,索引器,事件,字段,建構函式,過載運算子,巢狀型別和終結器。

三.建構函式

1.例項建構函式

建構函式在類或結構體上執行初始化**

建構函式被定義為乙個方法

建構函式具有與型別相同的名稱,並且沒有返回型別

例如public

class

person {

string

name;// define field

public

person (

string

n){ // define constructor

name = n; // initialization code

person p = new

person ("css"

);// call constructor

例項建構函式允許以下修飾符

2.過載建構函式

類或結構可能過載建構函式。

為了避免**重複,乙個建構函式可以使用this關鍵字呼叫另乙個建構函式:

當乙個構造函式呼叫另乙個時,被呼叫的建構函式首先執行。

我們可以將表示式傳遞給另乙個建構函式,如下所示

3.隱式無參建構函式

對於類,當且僅當我們沒有定義任何建構函式時,c#編譯器自動生成乙個無引數的公共建構函式。

對於結構體,無引數建構函式是struct的固有的;因此,我們不能定義我們自己的。

4.建構函式和字段初始化順序

我們之前看到字段可以在它們的宣告中用預設值初始化,例如

字段初始化發生在執行建構函式之前,並且在字段的宣告順序中。

5.非公共建構函式

建構函式不需要公開。

有乙個非公共建構函式的常見原因是通過靜態方法呼叫來控制例項建立。

6.靜態建構函式

靜態建構函式對每個型別執行一次,而不是每個例項執行一次。

型別只能定義乙個靜態建構函式,它必須是無引數的,並且具有與型別相同的名稱:

執行時在所使用的型別之前自動呼叫靜態建構函式。

有兩件事情觸發了:

·例項化型別

·訪問型別中的靜態成員

靜態建構函式允許的唯一修飾符是unsafe和extern。

靜態字段初始化器在呼叫靜態建構函式之前執行。

C 基礎之自定義String型別

string.h ifndef string h define string h include include include include using namespace std class stringelse 拷貝建構函式 string const string other 析構函式 st...

C自定義型別

一 自定義型別基本概念 1 結構體 結構體就是將任意多個內建型別變數包含在一起形成的乙個結構,結構特也可以巢狀定義,不能在內部定義自己結構的變數,因為是不完整的型別,但是可以定義指向自己型別的指標,這也是鍊錶的原理,其定義形式如下 struct a 2 列舉 列舉型別是由一些項組成的型別,具體看 列...

c語言 自定義型別

struct stu 分號不能丟 匿名結構體型別 struct x struct a 20 p p x 非法的操作,上面倆種完全是不同的宣告 struct node 結構體的自引用 struct node n1 null 直接初始化 struct node n2 null 結構體巢狀初始化 先來看下...