[英]Anonymous types VS Local variables, When should one be used?
我不确定何时应该在C#中使用匿名类型而不是局部变量 。
我有:
string fullMessage // This is the full message including sender and recipient names
string sender = GetMessagePart(fullMessage, "from");
string recipient = GetMessagePart(fullMessage, "to");
//do some stuff and deliver the message
我应该使用:
var msg = new {
sender = GetMessagePart(fullMessage, "from")
recipient = GetMessagePart(fullMessage, "to")
};
代替?
你的意思是静态类型的变量? 请注意,匿名类型是静态类型的... (由于问题编辑而被删除)
C#匿名类型有2个问题:
如果您只需要了解单个方法中的数据,并且它是只读的,那么匿名类型就很方便(实际上这涵盖了很多情况)。
如果您需要改变数据或将其传递给调用者,则使用定制类或简单变量(等)。
在给出的情况下,我看不出使用匿名类型的理由; 如果您只想要这些值,请使用单独的变量方法。 如果“消息”具有已定义的含义,则声明Message
类并填充该类。
在此方法之外将发件人和收件人组合在一起是否有意义? 如果是这样,请考虑为他们创建一个类。 如果没有,我通常会使用单独的局部变量,但我怀疑这主要是通过习惯。
我怀疑我们在这里得到的是一对概念上相关的局部变量。 这种关系可能不够强大,不足以得到一个完整的类型,但它在方法中是有意义的。 在某些方面,使用匿名类型是一种非常巧妙的方式,使配对显而易见。 另一方面,如果你的方法足够长,确实需要额外的清晰度,也许你应该打破它。
请注意,使用匿名类型会使一些重构技术更难,因为该类型仅适用于该方法(没有一点hackery)。
我意识到这是一个多余的回答,但它确实让我觉得整体想法有一些优点 - 这有点像在函数式语言中使用元组。
在这种情况下,使用局部变量(我认为这就是你的意思)。
匿名类型应该在需要标准名称类型的地方使用,但仅用于方法内部的实现目的。 它消除了创建新类型定义的繁琐工作。
你不需要这里的类型,所以不要使用匿名类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.