c# - 有没有一种技术可以区分泛型类型的类行为?

标签 c# generics type-constraints

我想做类似下面的事情,但是因为 T 本质上只是一个 System.Object 这行不通。我知道 T 可以通过接口(interface)进行约束,但这不是一种选择。

public class Vborr<T> where T : struct
  {

    public Vborr()
    {
    public T Next()
    {
      if ( typeof( T ) == typeof( Double ) )
      {
         // do something for doubles
      }
      if ( typeof( T ) == typeof( Float ) )
      {
         // do something different for floats..
      }
    }
  }

我经常发现缺少 C# 泛型。

谢谢!

保罗

最佳答案

泛型的全部意义在于您可以对任何有效类型做同样的事情。

如果您真的是在为这些类型做一些特定的事情,那么该方法就不再是通用的了,应该为每个特定类型重载。

public class Vborr<T> where T : struct
{
    public virtual T Next() { // Generic Implementation }
}

public class VborrInt : Vborr<int>
{
    public override int Next() { // Specific to int }
}

public class VborrDouble : Vborr<double>
{
    public override double Next() { // Specific to double }
}

关于c# - 有没有一种技术可以区分泛型类型的类行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3943701/

相关文章:

java - 将通用 Java 输入限制为两种类型之一

java - 带有泛型的静态工厂方法

c# - 什么时候在 C# 中拥有公共(public)无参数构造函数很重要?

c# - C#的lock关键字到C++的转换

c# - 通过以字符串开头的属性在xml中查找节点

c# - 如何实现徽章?

c# - 如何在 StreamSocket 的 ConnectAsync() 上设置超时值?

c# - 在我的 Elasticsearch 嵌套客户端中使用泛型时出错?它无法识别字段。标题

typescript - 创建一个采用枚举参数的类型

c# - 术语 "Naked type constraint"指的是什么?