【问题标题】:Conditional to check if array is equal to a particular value [duplicate]有条件地检查数组是否等于特定值[重复]
【发布时间】:2021-12-16 04:21:51
【问题描述】:

我希望这段代码能将“无爱好”写入控制台。但是,没有任何输出。这是为什么呢?

string[] hobbies = new string[0];
if (hobbies == new string[0])
  {
    Console.WriteLine("no hobbies");
  }

【问题讨论】:

  • 数组是引用类型,这意味着,即使您创建两个具有相同元素的数组,它们也是两个不同的对象。如果要比较元素,可以使用例如SequenceEquals
  • 如果您只是想检查数组是否为空,请执行 if(hobbies.Length == 0) 或使用 Linq if(!hobbies.Any())

标签: c# arrays


【解决方案1】:

您正在比较数组,== 在这种情况下比较 references 而不是值。如果你想比较数组的内容,你可以使用SequenceEqual:

hobbies.SequenceEqual(new string[0])

【讨论】:

  • 当然,但是为了可读性,我宁愿使用hobbies.Length == 0
【解决方案2】:

可以使用 array.Equal(another_array) 或 array.SequenceEqual(another_array) 比较数组内容。 试试这个:

static void Main(string[] args)
    {
        string[] hobbies = new string [0];
        if(hobbies.SequenceEqual(new string[0]))
        {
            Console.WriteLine("no hobbies");
        }

        Console.ReadKey();
    }

【讨论】:

  • 接受的答案已经包含您提供的解决方案。如果您认为答案能更好地回答问题,请使用更多信息编辑您的答案。
猜你喜欢
  • 1970-01-01
  • 2023-01-02
  • 2021-12-11
  • 1970-01-01
  • 2019-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-11
相关资源
最近更新 更多