gpt4 book ai didi

c# - Tuple.Create 返回类型

转载 作者:行者123 更新时间:2023-11-30 19:21:12 24 4
gpt4 key购买 nike

给定

void foo(Tuple<object> t)
{

}
void bar()
{
foo(Tuple.Create("hello"));
}

c#编译器返回

error CS1502: The best overloaded method match for 'foo(System.Tuple<object>)' has some invalid arguments
error CS1503: Argument 1: cannot convert from 'System.Tuple<string>' to 'System.Tuple<object>'

向 Tuple.Create 添加显式类型达不到它的目的。我怎样才能说服编译器接受代码?

FWIW,我认为 C++ 没有这个问题:http://live.boost.org/doc/libs/1_33_1/libs/tuple/doc/tuple_users_guide.html#constructing_tuples

最佳答案

这是每天都会出现的通用类型协变问题。根本不可能转换 Foo<T>Foo<SubT>或相反亦然。从 .NET 4 开始,它受支持 - 但仅适用于接口(interface)和委托(delegate),并且通过声明将泛型类型参数显式指定为变体 Foo<out T1> .

关于c# - Tuple.Create 返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868051/

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