gpt4 book ai didi

c# - 在重载方法上使用泛型参数

转载 作者:太空狗 更新时间:2023-10-30 00:02:41 25 4
gpt4 key购买 nike

为什么这个程序输出Generic Value而不是Hello world!:

using System;

class Example
{
public static void Print<T>(T value)
{
Console.WriteLine("Generic Value");
}

public static void Print(string value)
{
Console.WriteLine(value);
}

public static void GenericFunc<T>(T value)
{
Print(value);
}

static void Main()
{
GenericFunc("Hello world!");
}
}

如何在 C# 中转换泛型方法参数?

最佳答案

重载解析仅在编译时完成。

GenericFunc<T>不知道是否Tstring或者在编译时的其他东西,它只能使用 Print<T>(T value) “过载”。

使用 dynamic ,您可以将其更改为动态调度,并获得您期望的行为:

Print((dynamic)value);

这使得重载解析发生在运行时,实际运行时类型为 value .

关于c# - 在重载方法上使用泛型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35340138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com