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

C#中为数组属性编写if语句报错,请求技术帮助

问题排查与解决

我帮你梳理下这段C#代码里的问题,核心错误出在属性setter的判断逻辑上:

错误原因

你的Arr属性是int[](整数数组)类型,所以setter方法里的value是一个数组对象,而你写的value < 0是试图把数组和整数做比较——C#根本不允许这种跨类型的比较操作,这就是代码报错的直接原因。

针对需求的修正方案

我猜你应该是想确保传入的数组中没有负数元素,下面给出对应修正代码,同时补充几种常见场景的处理方式:

场景1:确保数组中所有元素都不小于0

遍历传入的数组,逐个检查元素是否合法:

public class hamid 
{ 
    private int[] arr = new int[10]; 
    public int[] Arr 
    { 
        get => arr; 
        set 
        {
            // 先判断传入的数组是否为空,避免空引用异常
            if (value == null)
            {
                Environment.Exit(1);
            }
            // 遍历每个元素,检查是否有负数
            foreach (int num in value)
            {
                if (num < 0)
                {
                    Environment.Exit(1);
                }
            }
            // 检查通过后赋值
            arr = value; 
        } 
    } 
}

场景2:同时限制数组长度(比如保持原数组的长度10)

如果你还想确保传入的数组长度和原数组一致,可以加上长度判断:

public int[] Arr 
{ 
    get => arr; 
    set 
    {
        if (value == null || value.Length != 10)
        {
            Environment.Exit(1);
        }
        // 额外检查元素非负的话,加上遍历逻辑
        foreach (int num in value)
        {
            if (num < 0)
            {
                Environment.Exit(1);
            }
        }
        arr = value; 
    } 
}

额外优化建议

用Environment.Exit(1)直接退出程序并不是处理错误的最佳实践,更推荐抛出明确的异常,让调用方可以捕获并针对性处理错误,比如:

if (num < 0)
{
    throw new ArgumentOutOfRangeException(nameof(value), "数组中不能包含负数元素");
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:59:19