【问题标题】:can you return implicit type from a method?你能从方法中返回隐式类型吗?
【发布时间】:2012-09-12 10:44:39
【问题描述】:

你能在 C# 中做这样的事情吗

var GetSomething()
{
    var x = new { a = "b", i = 1 };
    return x;
}

或者也许我可以做任何其他选择?关于返回类型是的,我知道。我正在寻找更通用的东西:D

【问题讨论】:

  • 也许你应该解释一下你为什么要做这样的事情,这样你可能会得到更好的建议。

标签: c#-4.0 types implicit


【解决方案1】:

var 是语法糖——它不是缺少类型。类型在编译时确定。

只能在方法内部使用。

也许您希望改用dynamic

动态类型允许其发生的操作绕过编译时类型检查。相反,这些操作是在运行时解决的。

另见Using Type dynamic

dynamic GetSomething()
{
    dynamic x = new { a = "b", i = 1 };
    return x;
}

【讨论】:

    【解决方案2】:
    var a = GetSomething();
    
    static   Object  GetSomething()
    {
        var x = new { a = "b", i = 1 };
        return (Object)x;
    }
    

    匿名类型可以从方法返回,但必须强制转换为对象,这违背了强类型的目的。

    【讨论】:

    • 添加原始匿名类型的成员字段如何(或是否)可以通过回滚来恢复可能有用吗?
    【解决方案3】:

    我设法返回匿名类型。我将它作为对象返回,然后将其转换。感谢任何回答的人:D

    object GetSomething()
    {
        var x = new { a = "b", i = 1 };
        return x;
    }
    

    【讨论】:

      猜你喜欢
      • 2010-09-23
      • 1970-01-01
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多