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

C#跨页面访问数组遇权限及非静态调用问题求助

问题解决:CS0120错误与访问权限问题

错误原因及修复步骤

1. 解决CS0120错误:非静态方法调用问题

你直接通过类名Table.GetRates(...)调用方法,但GetRates是非静态方法,必须通过类的实例调用,或者将方法和关联成员改为静态:

方案一:通过实例调用

// 先创建Table类的实例
Table tableInstance = new Table();
Tuple<double, double, double> resultTuple = tableInstance.GetRates(Convert.ToDouble(txtInput.Text));

方案二:改为静态成员(推荐,适合全局复用场景)

修改tablearray.cs代码:

namespace testarray
{
    public partial class Table
    {
        // 将Rate改为静态数组,供静态方法访问
        private static double[,] Rate = new double[,]
        {
            { 0.25,    0.384615385, 0.153846154 },
            { 0.255,   0.395348837, 0.15503876 },
            { 0.26,    0.40625,     0.15625 },
            { 0.265,   0.417322835, 0.157480315 },
            { 0.27,    0.428571429, 0.158730159 },
        };

        // 将GetRates改为静态方法
        public static Tuple<double, double, double> GetRates(double input)
        {
            double PercentToGive = 0;
            double ValueStore = 0;
            double ValueAdmin = 0;
            // 遍历数组行索引,而非元素值(修复原foreach的逻辑错误)
            for (int x = 0; x < Rate.GetLength(0); x++)
            {
                // 浮点数避免直接用==比较,用容差判断精度问题
                if (Math.Abs(Rate[x, 0] - input) < 1e-9)
                {
                    PercentToGive = Rate[x, 0];
                    ValueStore = Rate[x, 1];
                    ValueAdmin = Rate[x, 2];
                    break;
                }
            }
            // 补充返回语句(原代码缺失)
            return Tuple.Create(PercentToGive, ValueStore, ValueAdmin);
        }
    }
}

修改后即可直接用Table.GetRates(...)调用。

2. 解决访问权限问题:Table.Rate inaccessible

原代码中Rate数组未指定访问修饰符,默认是private,因此其他类无法访问。不建议直接将Rate改为public破坏封装,推荐通过GetRates这类方法封装数据访问逻辑,既能解决权限问题,也能保证代码的可维护性。

额外修复:原代码的其他问题

  • 原foreach (int x in Rate)逻辑错误:遍历的是数组元素值而非索引,会导致数组越界或匹配失败,改为for循环遍历行索引更合理。
  • 浮点数直接用==比较存在精度风险,用Math.Abs(差值) < 极小值的方式判断相等更可靠。
  • 原GetRates方法缺失返回语句,必须补充return完成Tuple的返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 12:12:20