【问题标题】:Derive method return type from parameter type从参数类型派生方法返回类型
【发布时间】:2019-07-27 11:41:09
【问题描述】:

我想知道是否可以创建这样的方法:

public var test (var value)
{
    // ...
    return value;
}  

意思是,如果valuebool,我想返回一个bool,如果value是一个string,我想返回一个string,等等

【问题讨论】:

  • 你想返回给定参数的type吗?

标签: c# function return-value func


【解决方案1】:

如果您的返回类型应该与 value 参数的类型相同,您可以创建一个带有泛型参数的方法:

public T Test<T>(T value)
{
    return value;
}

了解更多关于泛型here

您提到您也可以使用dynamic 关键字来执行此操作,但我建议不要在这种情况下使用dynamic。在某些特殊情况下,dynamic 应该在泛型上使用,但它主要在处理 COM 互操作时变得相关。

【讨论】:

    【解决方案2】:

    根据您的最终陈述,您希望返回与您在输入中收到的相同类型,因此,您可以使用通用函数来做到这一点

    public T test<T>(T input)
    {
        return input;
    }
    
    void Main()
    {
        Console.WriteLine(test(true));
        Console.WriteLine(test(1));
        Console.WriteLine(test("Steve"));
    }
    

    More info on Generics

    【讨论】:

    • tnx 但我知道我找到了一种使用动态类型的方法,所以知道问题是哪个更好?通用的还是动态的?
    • 如果你的 better 意味着性能,那么动态会变慢,因为它们正在使用运行时调用。
    【解决方案3】:

    我找到了办法:

    public dynamic GetAnything(dynamic val)
    {
        return val;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 1970-01-01
      • 2020-03-30
      • 2011-10-09
      • 2018-10-10
      • 1970-01-01
      相关资源
      最近更新 更多