2017-07-29 4 views
1

を変更防ぐことはできませんが、メインウィンドウクラスでは、私は配列があります。プライベートセッターは私のコードでは、配列要素

public TextBox[,] Letterbox { get; private set; } = new TextBox[4, 4]; 

をし、他のクラスでは、私が

my_main_window.Letterbox[1, 1] = null; 

とそれをやってみてくださいうまく動作します。配列に他のクラスへの書き込みはできませんが、アクセスは可能です。私はどうすればいいのですか?

+0

あなたのケースでは、 '民間set'は、あなたが別のインスタンスを設定することができないことを意味し'TextBox [、]'を 'Letterbox'プロパティに追加しますが、要素を設定することができます。 なので、いくつかの 'ReadOnlyCollection'を使うことをお勧めします。 –

答えて

3

回答:レターボックスはプロパティとして配列プロパティです。コードでは、配列の新しい値を設定することはできません。

しかし、その配列にアクセスできるものは、配列で何でもできます。

あなたがしようとしていることを行うには、indexerが必要です。

public class LetterBox 
{ 
    private TextBox[,] array = new TextBox[4, 4]; 
    public TextBox this[int x, int y] 
    { 
     get 
     { 
      return array[x, y]; 
     } 
    } 
} 

(あなたはまだそれを設定するいくつかの方法が必要になりますが、これは、あなたが探している構築物を作製する方法である。)

関連する問題