在正常的函數調用中,一個函數只能返回一個類型的值,但在某些特殊情況下,我們可能需要一個方法返回多個類型的值,除了通過ref,out或者泛型集合可以實現這種需求外,今天,講一下元組和結構體在這一方面的應用。
元組
元組(Tuple)是一種數據結構,用於存放一組數據,它是值類型的,可讀寫的,類似於泛型集合,但元組的使用更加精巧,另外,元組最多接受7個元素。
元組的聲明很簡單:
var tupledata=("你好",1,2) ;//最簡單的聲明方法
Tuple<int,string> tuple=new Tuple<int, string>(1,"你好");//最正式的聲明
正因為他是值類型,所以聲明的時候要同時賦值,不然編譯不通過。
那如何去獲取元組中的值呢?很簡單,使用元組名.Item1-7
int a = tuple.Item1;string b = tuple.Item2;
元組中的元素也是可以自定義名稱的
var tup = (name: 1, age: 2);Console.WriteLine(tup.Item1); //之前的調用方法依然是可用的Console.WriteLine(tup.age);
了解了這些,我們在方法中就可以嘗試通過元組去返回數據了
static (int, string) returnTuple() => (1, "你好");
var result =returnTuple();
Console.WriteLine(result.Item1);
Console.WriteLine(result.Item2)
運行結果如下:
結構體
結構體(struct)也是值類型的,它的聲明就像類一樣,只不過關鍵字是struct
下面來看一下它的聲明:
struct MyStruct {
public int id;
public string name;
}
它的使用也很簡單,繼續來看代碼
MyStruct test = new MyStruct{
id = 1,
name = "小藝"
};
因為結構體是一種值類型的,所以當一個結構體對象給另一個實例對象賦值后,改變任意一方的屬性值,都不會影響到新賦值的實例對象,而引用類型則不同,本節對此不展開討論,讀者有興趣可以關注后續的文章。
我的公眾號二維碼: