错误 - 当前上下文中不存在该名称

时间:2015-01-29 12:38:46

标签: c# arrays

我是编程新手,无法让这段代码工作。 fillPositive方法应该按数字顺序填充数字为1-n的大小为n的数组,但是当我尝试从main方法调用fillPositive时,我在编译时得到错误'当前上下文中不存在名称'fillPositive' 。

这是我的代码。

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


namespace SOFT140
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] taskOneArray = new int[15];
            taskOneArray = fillPositive(15);
            Console.WriteLine(taskOneArray);
            Console.ReadKey();
        }

    }
}

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

namespace SOFT140
{
    public class ArrayMethod
    {
        public static int[] fillPositive(int n)
        {
            int sum = 0;               // Variable to hold element values
            int[] a = new int[n];

            for (int i = 0; i < a.Length; i++)       // Iterate though all array elements adding one each time
            {
                a[i] = sum + 1;
                sum++;
            }

            return a;   // Return the array

        }

    }
}

我尝试用几种不同的方式初始化数组,看看是不是问题。但我仍然得到同样的错误。

int[] taskOneArray = fillPositive(15);

int[] taskOneArray = new int[fillPositive(15)];

非常感谢任何帮助。

编辑:当我调用这样的方法时:

taskOneArray = ArrayMethod.fillPositive(15);

我得到了同样的错误信息。 '名称ArrayMethod在当前上下文中不存在'

2 个答案:

答案 0 :(得分:1)

你应该这样称呼它,因为fillPositive是ArrayMethod类中的静态方法。

static void Main(string[] args)
    {
        int[] taskOneArray = new int[15];
        taskOneArray = ArrayMethod.fillPositive(15);
        Console.WriteLine(taskOneArray);
        Console.ReadKey();
    }

您可能会将功能调用理解为访问您朋友的家。如果你必须去家乡外的朋友家,你需要先到他的家乡,然后到他的家。 在这种情况下 -

  

Main()方法就是你的家。

     

ArrayMethod是他的家乡&amp;

     

fillPositive()是他的家

答案 1 :(得分:0)

长话短说:你忘了使用课堂上的这个功能。

函数fillPositive存在于ArrayMethod类中,而Program类并不熟悉它。因此,您需要将调用到类中,以便从中获取相关方法。

这可以通过以下语法完成:

<Class name>.<Method>(<Parameters>)

或在您的情况下,而不是:

int[] taskOneArray = fillPositive(15);

此:

int[] taskOneArray = ArrayMethod.fillPositive(15);