非静态字段需要对象引用。 。 。 。 ,错误

时间:2012-07-12 20:15:31

标签: c#

这是我的代码:

目的是添加两个大数字,首先在2个数组中输入两个数字然后交换它们并添加它们,基于控制台,

我是C#的新手,所以请解释一下我的代码知识

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sum_Two_BIG_Numbes
{
    public class matrix
    {

        public int[] c;

        public void input(int[] a)
        {
            for (int i = 0; i < a.Length; i++)
            {

                a[i] = Convert.ToInt32(Console.ReadLine());

            }
        }
        public void Jamk(int[] a, int[] b, int[] c)
        {

            for (int i = 0; i < a.Length; i++)
            {
                int temp = a[i] + b[i];
                if ((temp < 10) && (c[i] != 1))
                {
                    c[i] = c[i] + temp;
                }
                else
                {
                    c[i] = c[i] + temp % 10;
                    c[i + 1] = c[i + 1] + temp / 10;

                }
            }


        }
        public void swap(int[] a)
        {

            for (int i = 0; i < a.Length; i++)
            {
                a[i] = a[a.Length - i];
            }

        }
    }
    class Program
    {
        public void Main(string[] args)
        {
            int[] a = new matrix();
            //int[] a = new int[30];
            int[] b = new int[30];
            int[] c = new int[30];
            Console.WriteLine("Enter First Number : ");
            matrix.input(a);


            Console.ReadLine();
        }
    }
}

我收到此错误“非静态字段需要对象参考......”,

3 个答案:

答案 0 :(得分:2)

matrix.input(a);

宣布matrix的地方(不是)。

int[] a = new matrix();

此外,您无法将matrix的实例分配给int[]。没有从一个到另一个的隐式转换。虽然我不能说这是一个很棒的设计,但你想要的是这样的:

matrix a = new matrix();
a.c = new int[SomeSize];
// more code
a.input(b);  // or something similar...

答案 1 :(得分:0)

您需要在Main方法中创建一个新的类矩阵实例,如下所示: matrix instance = new matrix(); 然后你可以调用矩阵类的方法。阅读静态和实例方法/属性/字段之间的差异。

答案 2 :(得分:0)

你的代码真的没有意义,但这就是我认为你的意思

public void Main(string[] args)
        {
            matrix m = new matrix();
            int[] a = new int[30];
            int[] b = new int[30];
            int[] c = new int[30];
            Console.WriteLine("Enter First Number : ");
            m.input(a);


            Console.ReadLine();
        }

现在,这将让你超越第一轮编译错误,但它仍然没有意义。关于你的输入/输出。

我建议你阅读Console.ReadLine()

的使用情况