【问题标题】:Creating a dynamic anonymous types variables创建动态匿名类型变量
【发布时间】:2009-10-05 12:42:29
【问题描述】:

我可以创建一个匿名类型变量,然后再添加更多属性吗?

例如 var x = new { Name = "Ahmed" }; 并想在其中添加 Age? 我该怎么做?

另一个问题:我在一些博客上看到一个类型AnonymousType 这个类的名称空间是什么?这是我的例子http://www.codeproject.com/KB/cs/AnonymousTypesInCSharp.aspx

【问题讨论】:

  • 这样的对象通常被称为“扩展对象”。 C# 不实现 expando 对象,尽管C# 4 将支持通过“dynamic”关键字调用 expando 对象。如果需要,请考虑使用 Python 或 JScript 或其他本机支持 expando 对象的语言。

标签: c# anonymous-types anonymous-class


【解决方案1】:

第一个问题 - 你不能。

第二个问题 - AnonymousType 是该文章的作者创建的类型。您必须下载他的项目的源代码才能使用该类型。

【讨论】:

    【解决方案2】:

    不,你不能。

    第二个问题:没有这样的东西,它可能是指编译器生成的你无权访问的类。

    【讨论】:

      【解决方案3】:

      不,这对您的应用程序没有效率。 你确信你不想介绍某种课程吗?

      using System;
      class Generic{
      
         public void doSomething(){}
      
         private string name;
         private string _othreFeature;
      
      }
      

      您可以随时使用新功能对其进行扩展。

      【讨论】:

        【解决方案4】:

        这是一个完全合乎逻辑的问题...我同时使用 Java 和 C#,这是我的一个大烦恼...事实上几乎所有语言都有某种匿名类型大声笑... PHP , JavaScript, C#, vb (all), 不胜枚举..

        当您基本上将数据投入到一个对象中并且您不需要为它创建一个类时,这是一个非常有用的功能。

        事实上,这正是 LINQ 所利用的......

        var someObject (can be interable/Enumerable) = 
            from p in products
            where p.id == 123
            select new { productid };
        

        blah blah 你明白了.. 它非常有用... :-)

        干杯!

        【讨论】:

        • 我知道这已经很老了,但是您的最后一行似乎有误,我只是为其他读者澄清一下。如果您只想要 LINQ 语句中的产品 ID,则不会使用 select(prod => new { prod.ID }),您只需执行不使用匿名的 select(prod =? prod.ID}完全没有类型。如果您想将名称与 ID 配对,那么是的,您将使用 new{prod.Name, prod.ID} 这将是一个匿名类型。同样,我知道......非常旧但仍然。
        猜你喜欢
        • 2011-04-30
        • 2023-04-08
        • 2017-07-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-28
        • 2021-10-26
        相关资源
        最近更新 更多