标签:解释 lin value mat 特定 return 方便 序列化 构造
这种的确灵活性不高。
1.如何创建元组
Tuple object=new Tuple("","",""); Tuple object=Tuple.create (1,1,1)
这里需要一 一对应。
有几个特性:
1.只能创建7个元素,但是可以写8个,最后一个是Tuple
testTuple.Rest.Item1 //testTuple 余下部分
2.tuple 只能按顺序来获取,且不能调换位置,也没有元素名称
2.用法
当需要返回多个值得时候,可以替代out和写一个viewmodel。
比如说传入一个object,然后装箱,再拆箱。
Tuple object=Tuple.create(1,1,1); public void testforTuple(object object) { var objectInfo = object as Tuple ; }
并不推荐使用,消耗过大,没必要,实在不行重载就好。
ValueTuple是C# 7.0的新特性之一,.Net Framework 4.7以上版本可用。
值元组也是一种数据结构,用于表示特定数量和元素序列,但是是和元组类不一样的,主要区别如下:
和Tuple一样,不解释。
(1)使用(string,int,uint) 可以替代创建,同时返回时用("str",1,1) 就可以对应。
(2)返回值可以指定元素名字,方便理解记忆赋值和访问:
(string name, int age, uint height)
(3) 同样可用于多值传递,不推荐.
(4) python语法来了,自己解析结构,并填充,_可忽略不需要的元素。
static (string name, int age, uint height) GetStudentInfo1(string name) { return ("Bob", 28, 175); } static void RunTest1() { var (name, age, height) = GetStudentInfo1("Bob"); Console.WriteLine($"Student Information: Name [{name}], Age [{age}], Height [{height}]"); (var name1, var age1, var height1) = GetStudentInfo1("Bob"); Console.WriteLine($"Student Information: Name [{name1}], Age [{age1}], Height [{height1}]"); var (_, age2, _) = GetStudentInfo1("Bob"); Console.WriteLine($"Student Information: Age [{age2}]"); }
序列化:
var tempValueTuple =newValueTuple<int,int>(1, 2);
StringBuilder output =new StringBuilder();
using(StringWriter writer =newStringWriter(output))
{
XmlSerializer xs =newXmlSerializer(typeof(ValueTuple<int,int>));
xs.Serialize(writer, tempValueTuple);
}
Console.WriteLine(output.ToString());
标签:解释 lin value mat 特定 return 方便 序列化 构造
原文地址:https://www.cnblogs.com/aoximin/p/13193950.html