gpt4 book ai didi

c# - 允许函数接受泛型类型的设计模式

转载 作者:太空狗 更新时间:2023-10-29 21:14:08 24 4
gpt4 key购买 nike

我有两个类:

public abstract class Uniform<T>
public class UniformMatrix4 : Uniform<Matrix4>

(到目前为止......将会有更多的实现不同的类型)

现在假设我想编写一个函数来接受任何统一对象...但我不能那样做,因为没有名为 Uniform 的类, 只有通用 Uniform<T> .那么解决这个问题的最佳方法是什么?

  1. 制作Uniform<T>实现 IUniform
  2. 制作Uniform<T>扩展Uniform
  3. 让我所有接受 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/

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