作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有两个类:
public abstract class Uniform<T>
public class UniformMatrix4 : Uniform<Matrix4>
(到目前为止......将会有更多的实现不同的类型)
现在假设我想编写一个函数来接受任何统一对象...但我不能那样做,因为没有名为 Uniform
的类, 只有通用 Uniform<T>
.那么解决这个问题的最佳方法是什么?
Uniform<T>
实现 IUniform
Uniform<T>
扩展Uniform
Uniform<T>
。直接?最佳答案
也让您的方法通用,这样就很好。
请注意,如果需要,您始终可以选择在函数上使用所有泛型类型参数,如下所示:
public void MyMethod<TUniform, T>(TUniform uniform) where TUniform: Uniform<T> {...}
编译器通常会在您有参数时自行推断类型参数,因此调用实际上看起来像 C# 源代码中的普通方法调用:
UniformMatrix4 uniform;
MyMethod(uniform); // the types of the generic functions are inferred
关于c# - 允许函数接受泛型类型的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8690985/
我是一名优秀的程序员,十分优秀!