【问题标题】:Define generic type limit to nullable primitive types为可为空的原始类型定义泛型类型限制
【发布时间】:2014-09-04 18:14:44
【问题描述】:

我可以用可为空的原始数据类型定义一个泛型类型吗? 类似的东西

public class DataTypeHolder<T> :List<T> where T : struct
{
    public DataTypeHolder()
    {

    }
    public void DoubleValueWithNull()
    {
        var count = this.Count;
        for (int from = 0; from < count; from++)
        {
            this.Add(null); ////  **this is needed..but causing compilation error**
        }

    }

}

以后应该可以了

DataTypeHolder<double?> d = new DataTypeHolder<double?>();

【问题讨论】:

  • 可能是: List&lt;T?&gt;(注意T?)?
  • 你不能只限制Nullable&lt;T&gt;而不是T吗?
  • 示例会有帮助。

标签: c# c#-4.0 generics


【解决方案1】:

你必须像这样定义你的类:

public class DataTypeHolder<T> :List<T?> where T : struct

等同于:

public class DataTypeHolder<T> :List<Nullable<T>> where T : struct

【讨论】:

  • 还是编译错误。我编辑我的问题,请看一下
  • @DJ 应该是DataTypeHolder&lt;double&gt;,而不是DataTypeHolder&lt;double?&gt;
  • 但我需要一组可为空的双精度数
  • DataTypeHolder 扩展 List 因此它存储可为空的双精度数。也许令人困惑,但确实如此。
  • 是的.. 非常感谢。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多