gpt4 book ai didi

c# - 为什么我必须显式提供泛型参数类型而编译器应该推断类型?

转载 作者:可可西里 更新时间:2023-11-01 08:02:13 25 4
gpt4 key购买 nike

为什么我必须显式提供泛型参数类型,而编译器应该推断类型?

public static T2 Cast<T1,T2>(this T1 arg) where T2 : class where T1 : class
{
return arg as T2;
}

示例用法:

 objOfTypeT2 = objOfTypeT1.Cast<TypeT1,TypeT2>();


与我希望使用更智能的编译器的用法相比:

 objOfTypeT2 = objOfTypeT1.Cast<TypeT2>();

或者也许我应该更聪明 :-)

请注意我提供了返回类型。我不想提供我在其上调用函数的对象,该方法是一个扩展方法

最佳答案

推理不考虑返回类型;但是,您可以尝试拆分泛型;例如,您可以编写代码以允许:

.Cast().To<Type2>()

通过(未经测试;仅供引用)

public static CastHelper<T> Cast<T>(this T obj) {
return new CastHelper<T>(obj);
}
public struct CastHelper<TFrom> {
private readonly TFrom obj;
public CastHelper(TFrom obj) { this.obj = obj;}
public TTo To<TTo>() {
// your code here
}
}

关于c# - 为什么我必须显式提供泛型参数类型而编译器应该推断类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4477636/

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