gpt4 book ai didi

c# - 如何获取两个 T 类型变量之间的所有值?

转载 作者:行者123 更新时间:2023-12-03 12:14:12 24 4
gpt4 key购买 nike

如果我有两个 T 类型的变量,假设两个 T 类型相同,是否可以获得两个变量之间的所有值?

我正在 .net 2.0 中工作,并基于此代码构建了一个 Range 类:Intersection of Date Ranges

如果我知道类型是 DateTime,则可以轻松地循环遍历日期以从“开始”值到“结束”值。就像这样:

List<DateTime> values = new List<DateTime>();

for (DateTime d = myRange.Start; d <= myRange.End; d = d.AddDays(1))
{
values.Add(d);
}

但是,为了使其更通用,有没有办法在任何类型 T 上执行此操作?

我要求的东西是不可能的吗?

最佳答案

您可以使用 IComparable<T> 执行类似的操作.

public static List<T> GetRange(T start, T end, Func<T,T> increment)
{
List<T> result = new List<T>();
for(T t = start; t.CompareTo(end) < 0; t = increment(t))
{
result.Add(t);
}
return result;
}

List<DateTime> values = GetRange<DateTime>(myRange.Start, myRange.End, d => d.AddDays(1));

需要手动提供增量函数有几个原因:首先,某些 IComparables 没有自然的增量函数:例如字符串。其次,即使有增量函数,也没有办法找到它。即使使用您的 DateTimes 示例,也无法确定您想要 AddDays(1) ,不是AddSeconds(1)

关于c# - 如何获取两个 T 类型变量之间的所有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825933/

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