除了LINQ查询,C#中如何使用匿名类型?我一直在尝试加速C#中的一些新功能,其中一个我没有使用过的是匿名类型。我了解它与LINQ查询相关的用法,我查看了这个SOpost,它提出了一个类似的问题。我在网上看到的大多数例子都与LINQ查询有关,这很酷。我看到了一些有些做作的例子,但并没有真正看到很多价值。您是否对匿名类型有一种新颖的用途,您认为它确实能为您提供一些实用性?通过一些思考,你可以把匿名类型变成Dictionary;RoyOsherove在这个博客上讨论了他的技术:http://weblogs.asp.net/rosherove/archive/2008/03/11/turn-anonymous-types-into-idictionary-of-values.aspxJacobCarpenter使用匿名类型作为一种使用类似于对象初始化的语法来初始化不可变对象的方法:http://jacobcarpenter.wordpress.com/2007/11/19/named-parameters-part-2/匿名类型可用作提供更多可读性的方法使用foreach语句迭代的集合中对象属性的别名。(虽然,老实说,这只不过是LINQtoObjects中匿名类型的标准用法。)示例:Dictionaryemployees=newDictionary{{1,"Bob"},{2,"Alice"},{3,"Fred"},};//标准迭代foreach(varpairinemployees)Console.WriteLine("ID:{0},Name:{1}",pair.Key,pair.Value);//别名为Key/Value作为ID/Nameforeach(varempinemployees.Select(p=>new{ID=p.Key,Name=p.Value}))Console.WriteLine("ID:{0},Name:{1}",emp.ID,emp.Name);虽然这个简短的示例没有太大改进,但如果foreach循环更长,则引用ID和名称可能会提高可读性。ASP.NETMVC路由使用这些对象。有时我怀疑做一些像LINQ查询这样的事情可能有用,但还没有碰巧使用LINQ-但你仍然需要某种投影。我不认为我会使用当前形式的匿名类型来处理与LINQ投影完全不同的任何事情。我希望看到的一件事是能够使用简单的声明创建“命名”类型,该声明将以与匿名类型相同的方式生成属性和构造函数,并覆盖相同的Equals/GetHashCode/ToString(有用)方式.当需要添加更多行为时,可以将这些类型转换为“正常”类型。同样,我认为我不会经常使用它——但这种能力通常很方便,尤其是在一个类的多个方法中。这可能是为C#5中的不可变类型提供更多支持的更大努力的一部分。补充一下Justice所说的,ASP.NetMVC是我第一次看到它们以有趣和有用的方式使用。下面是一个示例:Html.ActionLink("ALink","Resolve",new{onclick="someJavascriptFn();"})ASP.NetMVC使用此类匿名类型向HTML元素添加任意属性。我想有很多不同的方法可以完成同样的事情,但我喜欢简洁类型的干净风格,它给语言带来了更动态的感觉。LINQ最大的用途就是LINQ,这其实也是它被创造出来的原因。我想要linq之外的匿名类型的一个原因是创建一个临时的类结构对象,例如:varx=new{a=1,b=2};在某些情况下,这可能会让您的生活更轻松一些。我将它们用于模板化电子邮件,因为如果您使用反射和泛型,它们会很棒。一些信息可以在这里找到:http://www.aaron-powell.com/blog.aspx?id=1id=1247以上是C#学习教程:除了LINQ查询,你如何在C#中使用匿名类型?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
