C 7 0中的解構功能 Deconstruct

2021-09-20 05:52:37 字數 1989 閱讀 3284

c#7.0新增了諸多功能,其中有一項是新元組(valuetuple),它允許我們可以返回多個值,並且配合解構能更加方便的進行工作,如下面例子

static

void main(string

args)

\nage:");

}public

static (string name,int

age) getuser()

可以看到解構元組可以寫出優雅的**,並且可以使用型別推斷,但在這裡解構元組並不是重點,所以不過多關注,下面說乙個有趣的功能

解構能力並不是只能解構元組,他還有乙個更加有意思的功能,就是解構物件。是不是聽起來挺有意思。

static

void main(string

args)

; (

var name, var email) =user;

console.writeline($

"name:\nemail:");

}

上面**是不是很驚奇,反正我第一次看到時特別驚訝,也感覺特別有意思,那麼這到底怎麼實現的呢,其實只是在類中新增乙個析構函式(deconstruct)就可以,解構引數方法名稱必須是deconstruct,返回值必須是void,引數列表必須是out

public

class

user

public

string email

public

int age

public

string ***

//析構函式

public

void deconstruct(out

string name,out

string

email)

}

是不是感覺特別簡單,哈哈,

析構函式還支援過載

class

program

; (

var name1, var email1) =user;

console.writeline($

"name:\temail:");

(var name2,var age2, var email2) =user;

console.writeline($

"name:\tage:\temail:");

}}

public

class

user

public

string email

public

int age

public

string ***

//析構函式

public

void deconstruct(out

string name,out

string

email)

//結構函式過載

public

void deconstruct(out

string name,out

int age,out

string

email)

}

但是解構不支援引數一致的過載

哪怕引數型別不一致

感覺像引數型別推斷錯誤,但是,,

所以析構函式並不引數數量相同的過載,哪怕引數型別不一致

C 7 1 中的新增功能

2017 08 16 作者bill wagner olprod v radelg exdevillee c 7.1 是 c 語言的第乙個點版本 更新版本 它標誌著該語言發布節奏的加速。理想情況下,可以在每個新功能準備就緒時更快推出新功能。c 7.1 增加了將編譯器配置為匹配特定語言版本的功能。從而可...

簡述實現C 中GridView的分頁功能

1.將你的gridview的allowpaging屬性設為true 2.將你的gridview的pagesize屬性設為你要在一頁麵中顯示的行數 如10 3.重寫 找到gridview中的 pageindexchanging事件 protected void pagechg object sende...

C 中列舉型別的使用和功能

列舉型別本身是一種常量表示式,不能動態改變列舉型別的值。一 enum列舉的使用 預設的第乙個列舉成員賦值為0,後面的每個成員都比前乙個大1 二 列舉成員必須使用常量初始化 三 列舉成員的值可以不唯一 四 使用自定義的列舉型別初始化 open modes op1 input ok,input is a...