gpt4 book ai didi

c# - 泛型中的多态性

转载 作者:太空宇宙 更新时间:2023-11-03 22:05:11 25 4
gpt4 key购买 nike

我有一个表示动态值、最大值和最小值以及一些其他字段的通用结构,该结构增加动态值直到达到最大值并减少直到达到最小值 - 然后来回循环。当我希望此结构表示多种数值类型时,问题就来了:double、uint、int32、float ... 并将多个结构存储在一个列表中。所以我得到的是这个结构实例的列表,这迫使我为整个列表选择结构类型——但我想要一个列表中的各种类型。我怎样才能实现这样的事情?我尝试使用约束并制作“where T : object”,但它说我不能将 Object 类用作约束...

public struct eField<T> where T : struct
{
private string _fieldName;
private T _value;
private T _minVal;
private T _maxVal;
private double _duration;
}

public class Device
{
private List<eField> _fields;
}

当然它会弥补一个错误,说明 eField 必须得到一个类型参数 T>,我再次希望列表有几种类型的结构,而不是整个列表只有一种类型

最佳答案

根据您的示例,您似乎想使用 where T: struct 以限制值类型。

编辑

public interface IeField { }

public class eField<T> : IeField where T : struct
{
private string _fieldName;
private T _value;
private T _minVal;
private T _maxVal;
private double _duration;
}

并使用它。

List<IeField> fields;
fields.Add(new eField<int>());
fields.Add(new eField<uint>());
fields.Add(new eField<double>());

看看这篇文章 C# - Multiple generic types in one list

关于c# - 泛型中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695135/

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