C# 周期

C# 周期,c#,overlap,overlapping,C#,Overlap,Overlapping,我得到了以下任务: 如果给定的约会可以添加到约会列表中而没有重叠,则返回true 任何其他约会。 name=“约会”>当前约会的列表 name=“appointment”>要检查其是否符合其他约会的新约会 如果新约会介于当前约会之间,则为“9-10”、“11-12”、“15-16” 我目前的代码是: public bool IsAvailable(Appointment[] appointments, Appointment appointment) {

我得到了以下任务:

如果给定的约会可以添加到约会列表中而没有重叠,则返回true
任何其他约会。
name=“约会”>当前约会的列表
name=“appointment”>要检查其是否符合其他约会的新约会
如果新约会介于当前约会之间,则为“9-10”、“11-12”、“15-16”

我目前的代码是:

public bool IsAvailable(Appointment[] appointments, Appointment appointment)
{                
    bool overlap = true;

    foreach (var afspraak in appointments)
    {
        overlap = (afspraak.Start >= appointment.End || appointment.Start <= afspraak.End);
    }

    return overlap;
}
我真的不知道我做错了什么,有人看到我做错了什么吗

更新2: 问题是只有现在“应该返回错误的单元测试”才通过:(


使用当前方法,bool
overlap
仅设置为上次比较结果的值

一旦您发现无法添加没有重叠的约会,请考虑中断/返回

public bool可用(预约[]预约,预约)
{                
foreach(var afspraak in任命)
{

如果((afspraak.Start>=appointment.End&&appointment.End您没有跳出for循环,因此只有最后一个afspraak in appointment会影响重叠值。这也将节省宝贵的计算时间!除此之外,在处理布尔表达式时,您不需要
is false
==false
。绝对y!
为false
对于条件布尔语句不是必需的。但是,无论是否使用bang符号(!)降低可读性是有争议的。我建议遵循教师要求的代码风格和设计指南。还应该注意的是,编译器将这种比较减少到相同的IL。首先,感谢您的回答!我检查了您的代码,您是对的,当它遇到错误时,不应继续检查其他错误r重叠!但如果将您的更改放入我的代码中,它将只传递返回值为真的单元测试。请参阅更新2我继续为您更新了它,请尝试。我修改了条件检查。我尝试在更新中使用您的代码,但这一次只有应返回值为假的测试有效:/
Should return True:
        [TestCase("8-9")]       passed
        [TestCase("8-8:30")]    passed
        [TestCase("10-11")]     passed
        [TestCase("10:45-11")]  passed
        [TestCase("12-15")]     passed
        [TestCase("12-13")]     passed
        [TestCase("13-14")]     passed
        [TestCase("14-15")]     passed
        [TestCase("16-17")]     passed
        [TestCase("16:30-17")]  failed

Should return False:
        [TestCase("7-8")]       failed
        [TestCase("8-9:30")]    failed
        [TestCase("9:30-9:45")] failed
        [TestCase("9:30-11")]   failed
        [TestCase("8-10:30")]   failed
        [TestCase("17-18")]     passed
        [TestCase("12-18")]     failed
        [TestCase("11:30-12:30")] failed

------