You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何C#中用==判断数组等于特定值的条件未生效无输出

问题原因分析

你的代码没有输出的核心原因是C#中引用类型的默认比较规则:

  • 数组属于引用类型,默认使用==比较时,判断的是两个变量指向的内存堆地址是否相同,不会对比数组的长度、内容等实际数据
  • 两次new string[0]都会在堆内存中创建全新的空数组对象,对应两个完全不同的内存地址,因此==判断结果为false,不会进入if分支执行输出逻辑
可行的修复方案

方案1:直接判断数组长度(最推荐,性能最高)

如果仅需要判断数组是否为空,直接读取数组的Length属性即可:

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

方案2:使用SequenceEqual对比数组内容

如果需要通用对比两个数组的所有元素是否一致,可以使用System.Linq提供的SequenceEqual方法:

using System.Linq;

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

方案3:使用Array.Empty复用空数组实例

Array.Empty返回的是对应类型的全局单例空数组,所有同类型的Array.Empty调用指向同一个内存地址,因此可以直接用==比较:

string[] hobbies = Array.Empty<string>();
if (hobbies == Array.Empty<string>())
{
    Console.WriteLine("no hobbies");
}

内容的提问来源于stack exchange,提问作者hmm_interesting

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 11:06:04