使用new创建名称ValueTuple属性
我知道当我创建一个隐式的元组时,我可以命名参数:
var me = (age: 21, favoriteFood: "Custard");
是否可以在明确创建元组时命名参数? 即
var me = new ValueTuple(21, "Custard");
不,你不能。 ValueTuple
类型实际上独立于C#中的命免费精选名字大全段支持。 后者更像是匿名类型的命名属性。 也就是说,编译器会根据您的声明和用法分析代码并为相应的成员生成别名。 通过赋值,编译器可以学习字段的名称。 由于基本构造函数语法不提供命免费精选名字大全段的机制,因此不能使用它直接生成带有命免费精选名字大全段的元组。
当然,有一些方法可以重新解释从构造函数语法返回的值,为返回的值赋值。 我假设你已经意识到这种方法并正在寻找更直接的东西。
作为我所说的“重新解释”的一个例子,你可以这样做:
static (int value, string text) ConvertToNamed((int value, string text) t) { return t; }
然后这将在一个新变量中命免费精选名字大全段:
var t1 = new ValueTuple(21, "hello"); var t2 = ConvertToNamed(t1);
变量t1
与Item1
和Item2
粘在一起。 但编译器将隐式生成变量t2
的所需名称。
也许更好的例子是你不需要额外的方法:
(int value, string text) t = new ValueTuple(21, "hello");
同样,您并没有真正命名构造函数语法中的字段,但它们会被局部变量声明重新解释。
这可能不是一个严重的限制。 在需要具有持久且易于分配的名称的情况下,声明用户定义的类型可能比使用元组语法更好。 你也可以为用户定义的类型编写解构器,并且声明类似的类型意味着当涉及到reflection, dynamic
等时,名称是一等公民。
我不相信。 以下是我在ValueTuple上找到的文档:
https://docs.microsoft.com/en-us/dotnet/api/system.valuetuple-7?view=netframework-4.7
我个人没有使用过ValueTuble类型。 我之前使用过Tuple类:
var tuple = new Tuple(21, "Custard"); var number = tuple.Item1; var st = tuple.Item2;
但是我发现使用元组,特别是当通过方法笨重时。 始终必须知道Item1和Item2等中的内容。根据ValueTuple文档,它以相同的方式使用。
你不应该只做一个实体课吗?
我使用了Anonymous Type,我认为它符合您的需求。
上述就是C#学习教程:使用new创建名称ValueTuple属性分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var anyom = new { age = 21, favoriteFood = "Custard" }; number = anyom.age; st = anyom.favoriteFood;
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1005642.html