解决“非静态字段需要对象引用”错误

时间:2016-05-17 21:46:43

标签: c# object reference

我在C#Visual Studio中遇到以下错误,我无法解决:

“非静态字段”

需要对象引用

我不知道它意味着什么,也不知道如何解决它。当然,我在网上查了一下,但没有发现任何与我下面的简单代码说话的内容。我想要做的就是从Main()成功调用以下内容:

int result = MaxPair(nums);

非常感谢提前。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MaxPairSpace
{
    class Program
    {

        static int Main(string[] args)
        {

            int n = Int32.Parse( Console.ReadLine() );

            string input = Console.ReadLine();
            string[] split = input.Split(' ');
            int length = split.Length;
            int[] nums = new int[length];
            for (int x = 0; x < length; x++)
            {
                nums[x] = Int32.Parse(split[x]);
            }

            int result = MaxPair(nums);

            Console.WriteLine("{0}\n", result);
            return 0;
        }

        public int MaxPair(int[] numbers)
        {
            int result = 0;
            int n = numbers.Length;
            for (int i = 0; i < n; ++i)
            {
                for (int j = i; j < n; ++j)
                {
                    if (numbers[i] * numbers[j] > result)
                    {
                        result = numbers[i] * numbers[j];
                    }
                }
            }
            return result;
        } 
    }
}

1 个答案:

答案 0 :(得分:1)

您无法直接在静态方法中访问非静态方法/ Variable / Property。要访问这些项,您需要创建相应类的实例,并通过该实例访问它们,您可以在静态方法中访问其他静态方法/ Variable / Property。如果此类项目属于不同的类,则可以通过其类名访问它们。也就是ClassName.Method()。因此,更好的选择是更改方法签名,如下所示:

public static int MaxPair(int[] numbers)
{
   // Code here 
}