Create class Massive C#

本文关键字:Massive class Create | 更新日期: 2023-09-27 18:21:41

我需要在C#中创建Massive类,我尝试过这个代码,但它不能正常工作

using System;
namespace Massiv1
{
class Program
{
    static void Main(string[] args)
    {
        Console.Write("n = ");
        int n = Convert.ToInt32(Console.ReadLine());
        Massiv mas = new Massiv(n);
        mas.ShowAll();
        Console.Write("i = ");
        int i = Convert.ToInt32(Console.ReadLine());
        mas.ShowElement(i);
        Console.ReadLine();
    }
}
class Massiv
{
    public Massiv(int n)
    {
        int[] mas = new int[n];
        Random rand = new Random();
        for (int i = 0; i < mas.Length; ++i)
        {
            mas[i] = rand.Next(0, 10);
        }
    }
    public void ShowAll()
    {
        foreach (var elem in mas)
        {
            Console.Write(elem + " ");
        }
        Console.WriteLine();
    }
    public void ShowElement(int index)
    {
        try
        {
            Console.WriteLine("index {0} mas{1} = ", index, mas[index]);
        }
        catch (NullReferenceException)
        {
            Console.WriteLine("Error!");
        }
    }
    public int this[int index]
    {
        get { return mas[index]; }
        set { mas[index] = value; }
    }
    private int[] mas;
}
}

我的方法ShowAll不起作用,我不明白为什么。如何解决?

Create class Massive C#

更换

int[] mas = new int[n];

带有

mas = new int[n];

您想要使用您的字段——现在您正在将构造函数中的数据分配给局部变量,这在ShowAll方法中是不可用的。

编辑:

在构造函数中删除定义int[] masint[]前缀,它会创建一个局部变量,阻塞所需mas的字段定义(很难找到)。

编辑2:正如我在评论中所解释的,这就是定义变量的方式,通过在构造函数中而不是在类本身中这样做,您创建了一个局部变量,在完成构造函数的工作后不可用。

另一件需要注意的事情是,最好在类的顶部定义字段/属性,这样可以避免查找隐藏字段,比如这里的情况。

此外,你应该了解类变量和局部变量,我建议你看看这里:

变量和参数