我在允许/禁止活动的那一天有时间范围。 我准备了一个小班,可以保持一天的时间范围。 类的OkNok方法查找适用的句点并返回allow / forbidden。
我的问题:
<T>
代替<bool>
将其设为通用。例如,它可以返回包含2个布尔值和a的类或结构
值。在下面的示例中,如果t1-t2之间的时间,则返回true 。介于t2-t3 false 之间,t3-t4 true 之间,以及t4 false 之后。
class Program
{
static void Main(string[] args)
{
TimeSpan t1 = new TimeSpan(8, 48, 0);
TimeSpan t2 = new TimeSpan(9, 56, 0);
TimeSpan t3 = new TimeSpan(10, 5, 0);
TimeSpan t4 = new TimeSpan(13, 30, 0);
TO TO = new TO { Ti = t1, Ok = true, NT = new TO { Ti = t2, Ok = false, NT = new TO { Ti = t3, Ok = true, NT = new TO { Ti = t4, Ok = false } } } };
Console.WriteLine("The time now is considered " + TO.OkNok(DateTime.Now));
Console.ReadLine();
}
}
public class TO
{
public TimeSpan Ti;
public bool Ok;
public TO NT;
public bool OkNok(DateTime Time)
{
return OkNok(Time.TimeOfDay);
}
public bool OkNok(TimeSpan currentTime)
{
if (NT == null)
return Ok;
else if (currentTime > Ti && currentTime <= NT.Ti)
return (Ok);
else return (NT.OkNok(currentTime));
}
}
答案 0 :(得分:1)
您的问题不是很清楚,但我希望这有助于您:
//1) I want this class to be able to hold not just a true/false status, but a generic type T, so that it can return more data...
//2) If on the way it's possible to write it in a way that it would run faster and/or facilitate easier data entry.
class Program {
static void Main(string[] args) {
TimeSpan t1 = new TimeSpan(8, 48, 0);
TimeSpan t2 = new TimeSpan(9, 56, 0);
TimeSpan t3 = new TimeSpan(10, 5, 0);
TimeSpan t4 = new TimeSpan(13, 30, 0);
TO<bool> TO = new TO<bool>(t1, true) {
new TO<bool>(t2, false) {
new TO<bool> (t3, true) {
new TO<bool>(t4, false)
}
}
};
Console.WriteLine("The time now is considered " + TO.OkNok(DateTime.Now));
Console.ReadLine();
}
}
public class TO<T> : IEnumerable<TO<T>> {
public TimeSpan Ti;
public T Ok;
public TO<T> NT;
public TO(TimeSpan timeSpan, T ok) {
this.Ti = timeSpan;
this.Ok = ok;
}
public T OkNok(DateTime Time) {
return OkNok(Time.TimeOfDay);
}
public T OkNok(TimeSpan currentTime) {
if(NT == null) {
return Ok;
}
if(currentTime > Ti && currentTime <= NT.Ti) {
return Ok;
}
return NT.OkNok(currentTime);
}
public void Add(TO<T> nt) {
this.NT = nt;
}
IEnumerator<TO<T>> IEnumerable<TO<T>>.GetEnumerator() {
yield return this;
if(NT != null) {
yield return NT;
}
}
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() {
yield return this;
if(NT != null) {
yield return NT;
}
}
}