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不起作用,我不明白为什么。如何解决?
更换
int[] mas = new int[n];
带有
mas = new int[n];
您想要使用您的字段——现在您正在将构造函数中的数据分配给局部变量,这在ShowAll
方法中是不可用的。
编辑:
在构造函数中删除定义int[] mas
的int[]
前缀,它会创建一个局部变量,阻塞所需mas
的字段定义(很难找到)。
编辑2:正如我在评论中所解释的,这就是定义变量的方式,通过在构造函数中而不是在类本身中这样做,您创建了一个局部变量,在完成构造函数的工作后不可用。
另一件需要注意的事情是,最好在类的顶部定义字段/属性,这样可以避免查找隐藏字段,比如这里的情况。
此外,你应该了解类变量和局部变量,我建议你看看这里:
变量和参数