c# tuple還是valueTuple?
阿新 • • 發佈:2018-11-08
回聲 忽略 bubuko return 便在 簡潔 nuget 方法調用 特性
自從c#7.0發布之後,其中一個新特性是關於tuple的更新,使得tuple在編碼中更受歡迎
先總結一下tuple的常規用法
一、回味Tuple
Tuple的美式發音為 /?tj?p?l; ?t?p?l (方便在討論的時候準確發音,我是鬧過笑話)
Tuple是C# 4.0時出的一個新特性,因此.Net Framework 4.0以上版本可用。
1、創建Tuple
有兩種方式可以創建tuple元祖對象,如下所示
//1.使用tuple的靜態方法創建tuple
{
//最多支持9個元素
var tuple = Tuple.Create<int, int, int, int>(1,2,3,4);
}
//2.使用構造函數構造tuple
{
var tuple = new Tuple<int>(1);
}
2、使用tuple
static void Main(string[] args)
{
//1.使用tuple存入相關信息,替代model對象,標識一組信息
{
var tuple = new Tuple<int, string, string>(1, "張山", "1班");
}
//2.作為方法的返回值
{
var tuple = GetTuple();
}
}
static Tuple<int, int> GetTuple()
{
Tuple<int, int> tuple = new Tuple<int, int>(1, 2);
return tuple;
}
3、tuple取值
static void Main(string[] args)
{
//1.使用tuple存入相關信息,替代model對象,標識一組信息
{
var tuple = new Tuple<int, string, string>(1, "張山", "1班");
int id = tuple.Item1;
string name = tuple.Item2;
}
//2.作為方法的返回值
{
var tuple = GetTuple();
var id = tuple.Item1;
}
}
static Tuple<int, int> GetTuple()
{
Tuple<int, int> tuple = new Tuple<int, int>(1, 2);
return tuple;
}
以上就是tuple使用三部曲
下面在看下c#7.0關於tuple的新特性
二、ValueTuple
1、先從nuget包中下載
2、.使用新特性
static void Main(string[] args)
{
//1.新特性使用
{
var valueTuple = GetValueTuple();
int id = valueTuple.id;
string name = valueTuple.name;
string className = valueTuple.className;
//可以對返回參數進行解構,解析成更明確的表達
var (id1,name1,className1)= GetValueTuple();
int id2 = id1;
//忽略自己不必使用的值
var (id3, _, _) = GetValueTuple();
}
//2.常規tuple使用
{
var tuple = GetTuple();
int id = tuple.Item1;
string name = tuple.Item2;
string className = tuple.Item3;
}
}
static (int id, string name, string className) GetValueTuple()
{
return (1, "張三", "一班");
}
static Tuple<int, string, string> GetTuple()
{
Tuple<int, string, string> tuple = new Tuple<int, string, string>(1, "張三", "一班");
return tuple;
}
總結
1、ValueTuple的返回值寫法更簡潔,且方法返回聲明更明確,
因此方法調用方能夠明確獲取方法返回值定義的參數名
2、ValueTuple可對返回參數進行解構
升級到了 .NET Framework 4.6.2就可以使用c# 7.0的語法了,也就可以使用ValueTuple
c# tuple還是valueTuple?