C#如何从通用代码调用函数

米尔恰·伊斯帕斯

我是 C# 新手,我正在尝试制作一个泛型类型调度程序(类似于 C++),但看起来我无法使用泛型参数调用函数:

示例代码:

class Program
{
    static void Main(string[] args)
    {
        DoSomething(1);
    }

    static void DoSomething<T>(T value)
    {
        //error CS1503: Argument 1: cannot convert from 'T' to 'int'
        DoSomethingElse(value);
    }

    static void DoSomethingElse(int a)
    {
        Console.Write("int\n");
    }

    static void DoSomethingElse(float a)
    {
        Console.Write("float\n");
    }
}

能否请您解释一下为什么我不能调用DoSomethingElseDoSomething我如何转发value到另一个接受该特定类型的函数?

赞德先生

这可能不是最干净的处理方式,但您可以将其转换为dynamic. 问题是,如果你没有为任何类型实现一个方法T,它会在运行时崩溃。您可以通过向通用参数添加约束来稍微缩小该问题的范围

static void DoSomething<T>(T value) where T : struct
{
    DoSomethingElse((dynamic)value);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章