Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当时间落在一系列时间范围的时间范围内时,是否返回true false或某些数据?_C# - Fatal编程技术网

C# 当时间落在一系列时间范围的时间范围内时,是否返回true false或某些数据?

C# 当时间落在一系列时间范围的时间范围内时,是否返回true false或某些数据?,c#,C#,我有允许/禁止活动的时间范围。 我准备了一个可以容纳一天时间范围的小班。 该类的OkNok方法查找应用的句点并返回允许/禁止 我的问题: 如何使用而不是使其成为通用的。例如,它可以返回一个包含2个布尔值和一个 价值观 如果在途中,可以使其更快和/或方便数据输入 在下面的示例中,如果时间在t1-t2之间,它将返回true。t2-t3假之间、t3-t4真之间和t4假之后 class Program { static void Main(string[] args) {

我有允许/禁止活动的时间范围。 我准备了一个可以容纳一天时间范围的小班。 该类的OkNok方法查找应用的句点并返回允许/禁止

我的问题:

  • 如何使用
    而不是
    使其成为通用的。例如,它可以返回一个包含2个布尔值和一个 价值观
  • 如果在途中,可以使其更快和/或方便数据输入
  • 在下面的示例中,如果时间在t1-t2之间,它将返回true。t2-t3假之间、t3-t4真之间和t4假之后

    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
    对于列表中的每个项目都可以具有不同的类型吗?另外,为什么不使用实际参数呢l
    List
    ,并删除
    NT
    字段。它使代码更干净。是的,它有帮助。它实现了我的两个请求(T和简化实例化)。你能解释神奇的部分吗?谁调用Add方法/你如何一个接一个地实例化?神奇的部分是我实现的集合初始值设定项(请参阅)。它为括号之间指定的每个条目调用
    Add
    。完成此操作后,还需要枚举元素,因为
    to`1
    类现在可以视为
    to
    元素的集合:)