0

Massive クラスを作成し、2 つの Massive を追加するメソッドを追加したいと考えています。しかし、クラス インスタンスのプロパティ Length が機能しません。

public static void Add(Massiv mas1, Massiv mas2, ref Massiv mas3)
    {

        if (mas1.Length != mas2.Length)
        {
            Console.WriteLine("Error!"); return;
        }

        for (int i = 0; i < mas.Length; ++i)
        {
            mas3[i] = mas1[i] + mas2[i];
        }
    }

クラスで利用できるようにするにはどうすればよいですか? それは私のコードです。

class Massiv
    {
    public Massiv(int n)
    {
        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()
    {
        Console.WriteLine("Massive: ");
        foreach (var elem in mas)
        {
            Console.Write(elem + " ");
        }
        Console.WriteLine();
    }

    public void ShowElement(int index)
    {
        try
        {
            Console.WriteLine("mas[{0}] = {1}", index, mas[index]);
        }
        catch (IndexOutOfRangeException)
        {
            Console.WriteLine("Error!");
        }
    }

    public static void Add(Massiv mas1, Massiv mas2, ref Massiv mas3)
    {

        if (mas1.Length != mas2.Length)
        {
            Console.WriteLine("Error!"); return;
        }

        for (int i = 0; i < mas.Length; ++i)
        {
            mas3[i] = mas1[i] + mas2[i];
        }
    }

    public int this[int index]
    {
        get { return mas[index]; }
        set { mas[index] = value; }
    }

    private int[] mas;
}

}

4

3 に答える 3

3

プロパティを宣言していないようですLength。したがって、コンパイラはプロパティを認識できない可能性があります。

基本的に、これをクラスに追加します。

public int Length {
    get {
    }
    set {
    }
}

getter ではプロパティの値を返す必要がありますが、setter では値を変更する必要があります。

この場合、内部配列の長さを取得したいようです。書き込みアクセスが必要ない場合は、次のset部分をスキップできます。

public int Length {
    get {
        return mas.Length;
    }
}
于 2013-07-09T07:36:42.037 に答える
2

このプロパティをクラスに追加するだけです:

public int Length { 
    get { return mas.Length; } 
}

読み取り専用になるアクセサーしかないことに注意してくださいget(コンストラクターでプライベート配列を初期化するため、書き込みアクセスは必要ないようです)。

于 2013-07-09T07:37:08.580 に答える
0
public int Length {
    get {
        return mas.Length;
    }
}
于 2013-07-09T07:36:50.477 に答える