gpt4 book ai didi

c# - 为通用类型实现通用扩展方法

转载 作者:太空狗 更新时间:2023-10-29 21:35:52 25 4
gpt4 key购买 nike

如果您正在为泛型类实现泛型扩展方法,是否有更好的方法?因为完全按照 func1<V>() 调用 func2 是很自然的而不是 func2<T, V>()即省略 T 参数并将其称为 func2<V>()

public class A<T> where T : class {

public V func1<V>() {
//func1 has access to T and V types
}
}

public static class ExtA {

// to implement func1 as extension method 2 generic parameters required
// and we need to duplicate constraint on T
public static V func2<T, V>(this A<T> instance) where T : class {
// func2 has access to V & T
}
}

最佳答案

如果 func2() 只有通用参数 T,编译器可以推断出它,您可以在不指定参数的情况下调用它。

但是如果您需要这两个参数,则必须明确指定它们。类型推断是全有或全无:要么它可以推断出所有使用的类型(并且您不必指定它们),要么它不能并且您必须指定所有类型。

关于c# - 为通用类型实现通用扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8195345/

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