C# 当时间落在一系列时间范围的时间范围内时,是否返回true false或某些数据?
我有允许/禁止活动的时间范围。 我准备了一个可以容纳一天时间范围的小班。 该类的OkNok方法查找应用的句点并返回允许/禁止 我的问题:C# 当时间落在一系列时间范围的时间范围内时,是否返回true false或某些数据?,c#,C#,我有允许/禁止活动的时间范围。 我准备了一个可以容纳一天时间范围的小班。 该类的OkNok方法查找应用的句点并返回允许/禁止 我的问题: 如何使用而不是使其成为通用的。例如,它可以返回一个包含2个布尔值和一个 价值观 如果在途中,可以使其更快和/或方便数据输入 在下面的示例中,如果时间在t1-t2之间,它将返回true。t2-t3假之间、t3-t4真之间和t4假之后 class Program { static void Main(string[] args) {
而不是
使其成为通用的。例如,它可以返回一个包含2个布尔值和一个
价值观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));
}
}
类程序
{
静态void Main(字符串[]参数)
{
TimeSpan t1=新的TimeSpan(8,48,0);
TimeSpan t2=新的TimeSpan(9,56,0);
TimeSpan t3=新的TimeSpan(10,5,0);
TimeSpan t4=新的TimeSpan(13,30,0);
TO TO=新到{Ti=t1,Ok=true,NT=新到{Ti=t2,Ok=false,NT=新到{Ti=t3,Ok=true,NT=新到{Ti=t4,Ok=false}};
WriteLine(“现在的时间被认为是”+TO.OkNok(DateTime.now));
Console.ReadLine();
}
}
公开课
{
公共时间跨度Ti;
公共图书馆Ok;
公众对新界;;
公共布尔奥克诺克(日期时间)
{
返回OkNok(Time.TimeOfDay);
}
公共布尔OkNok(时间跨度当前时间)
{
if(NT==null)
返回Ok;
否则,如果(currentTime>Ti&¤tTime您的问题不太清楚,但我希望这有助于您:
//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;
}
}
}
//1)我希望这个类不仅能够保存true/false状态,而且能够保存泛型类型T,这样它就可以返回更多的数据。。。
//2) 如果在编写过程中,可以以运行更快和/或方便数据输入的方式编写。
班级计划{
静态void Main(字符串[]参数){
TimeSpan t1=新的TimeSpan(8,48,0);
TimeSpan t2=新的TimeSpan(9,56,0);
TimeSpan t3=新的TimeSpan(10,5,0);
TimeSpan t4=新的TimeSpan(13,30,0);
TO TO=新TO(t1,真){
新到(t2,false){
新到(t3,真实){
新到(t4,错误)
}
}
};
WriteLine(“现在的时间被认为是”+TO.OkNok(DateTime.now));
Console.ReadLine();
}
}
公共类到:IEnumerable{
公共时间跨度Ti;
公共交通不正常;
公众对新界;;
公共到(TimeSpan TimeSpan,T ok){
Ti=时间跨度;
这个,Ok=Ok;
}
公共T OkNok(日期时间){
返回OkNok(Time.TimeOfDay);
}
公共T OkNok(时间跨度当前时间){
if(NT==null){
返回Ok;
}
如果(currentTime>Ti&¤tTime你的类和其他代码在哪里?好的。好的…好的…好的…你对这段代码不感兴趣吗?主要是:我想用t填充链,并返回t而不是bool。我不知道怎么做。至于Ok OkNot,你可以用任何让你高兴的东西来替换它。一些变量(Ti,TN,Ok)为了使内联实例化简短,请保持简短…第一步是向类定义中添加一个泛型参数to
,然后您可以使用它而不是bool
。您可以将您想要实现的作为代码来编写吗?T
对于列表中的每个项目都可以具有不同的类型吗?另外,为什么不使用实际参数呢lList
,并删除NT
字段。它使代码更干净。是的,它有帮助。它实现了我的两个请求(T和简化实例化)。你能解释神奇的部分吗?谁调用Add方法/你如何一个接一个地实例化?神奇的部分是我实现的集合初始值设定项(请参阅)。它为括号之间指定的每个条目调用Add
。完成此操作后,还需要枚举元素,因为to`1
类现在可以视为to
元素的集合:)