2012-03-01 6 views
-8

クラス自体のメソッドで使用できる配列をクラス内に配置したいと考えています。私は方法で配列を評価し、別のものを読みたい、どうすればC#でこれを行うことができますか?おかげ配列をクラスのフィールドとして評価していますか?

class Something 
{ 
    Double[] arrayName = new Double[20]; 
    public void Method() 
    { 
     arrayName[index] = value; 
     index++; 
    } 
} 
+0

"メソッドを使って配列を評価する"とはどういう意味ですか? –

+0

あなたのコメントにコードを追加しました。私が虚偽の表現をしている場合は、調整してください。 –

答えて

2
public class Foo 
{ 
    private SomeType[] _someArrayField; 

    public void SomeMethod() 
    { 
     // you can access the _someArrayField field here 
    } 
} 
+0

+1でもアンダースコア;) –

+0

@AdamRobinsonもちろん、私は慣習として '_'でフィールドの先頭に接頭辞を付けるのが好きです。 –

+0

右、ちょうど友好的なジャブ;私は個人的にその大会を気に入らないのですが、それは味の問題です。 –

0

問題について開示された情報は、(理由は言語の障壁の可能性が高い)混乱されていますが、それは二つの問題の一つである:あなたがしようとしている

  1. Somethingのコンテキスト外(別のクラスと同様)からarrayNameにアクセスするには、アクセスレベルはarrayName(デフォルトのアクセスレベルはprivate)です。あなたが別のクラスでarrayNameフィールドを共有する必要があるなら、あなたはちょうどそうのように、publicを前に付けすることができます

    クラス何かあなたはindexがどこか 公共ダブル[] arrayName =新しいダブルの[定義されていると仮定すると、 { // 20]。 public void Method() { arrayName [index] = value; index ++; } }

  2. あなたは配列要素の値を割り当てようとしています。あなたが持っているコードは、配列のサイズまで処理する必要があります。その場合、index = 20(または21個の要素)のときになります。次の反復が行われると、次の要素の配列に十分なスペースがないため、IndexOutOfBoundsExceptionが発生します。

可変長配列と同様のList<Double>に切り替えることをお勧めします。その実装は次のようになります。

class Something 
{ 
    List<Double> listName = new List<Double>(); 
    public void Method() 
    { 
     listName[index] = value; 
     index++; 
    } 
} 

しかし、あなたは(この機能が必要な場合、私はそれを示唆しているが)、コレクションの種類を変更することができない場合indexarrayNameのサイズよりも大きい場合は、あなたの配列のサイズを変更することができます。これがあなたが探しているものであれば、私は例を提供することができます(または、単純な検索を通して多くの人の一人を見つけることができます)。

関連する問題