Tuple是基于.NET Framework 4.0 及以上版本才有的。微软称它为元组,如果有三个参数那就是三元组。如 Tuple(T1, T2, T3)
Tuple的命名空间在 System
很短吧,也就是说只要是基于.NET Framework 4.0 及以上版本的,创建项目就可以直接在Visual Studio中敲出来。
程序集: mscorlib(在 mscorlib.dll 中)
为什么要使用Tuple
来!先看看下面这个方法。
public bool MyMethod(out string msg)
{
msg = "www.wxzzz.com";
return true;
}
这个方法很简单,意图就是返回两个参数。这个是我们经常遇见的一个情况,为了返回两个或者多个参数而使用多个out..显然使用起来挺麻烦的。
也许有朋友说使用如下类似的代码不就可以了?
public object[] MyMethod();
{
//调用
object[] array = MyMethod();
bool a = (int)obj[0];
string b = (string)obj[1];
}
这样就会引起装箱拆箱的问题,效率就要降低许多….如果是一个复杂的对象,装箱拆箱是非常耗时的,所以泛型正是为此而生。
使用Tuple传递多个参数
Tuple提供了一共9个类,其实都是差不多的,只是参数不同。如下图所示
其实Tuple
有很多重载的类,最多可以传入8个参数。官方的建议是如果大于8个参数的话,第八个参数你可以传入Tuple
。就是以Tuple
包含Tuple
的用法啦。
下面我们来看看如何使用Tuple
返回4个参数吧。
public class HomeController : Controller
{
public ActionResult Index()
{
List<string> list=new List<string>();
//接收TupleTest()方法的返回值
Tuple<int, string, int, List<string>> result = TupleTest();
int a = result.Item1;
string b = result.Item2;
int c = result.Item3;
List<string> d = result.Item4;
d.ForEach(r => list.Add(r));
return View();
}
public Tuple<int, string, int, List<string>> TupleTest()
{
//返回了4个值
return new Tuple<int, string, int, List<string>>(5, "中国", 6, new List<string>() { "美国"});
}
}