2010-12-29 12 views
1

メソッドの属性を別のメソッドに使用するにはどうすればよいですか?メソッドの属性を別のメソッドに使用する

例えば: (iは関連する行にコメント)

iが

public int merge() 
    { 

     string[] source = textBox3.Text.Split(','); 

     int[] nums = new int[source.Length];//i want to use nums in mergesort() too,how can i do that? 

     for (int i = 0; i < source.Length; i++) 
     { 
      nums[i] = Convert.ToInt32(source[i]); 
     } 
      } 

public int mergesort() 
    { 
     if (nums.Length > 1)///i wrote nums here but compiler doesnt know what nums is. 
     { 
      int n = nums.Length; 
      int p = (int)Math.Floor(n/2.0); 
      int m = n - p; 
      List<int> lst1 = new List<int>(); 
      lst1.AddRange(nums.Skip(n/2)); 

      List<int> lst2 = new List<int>(); 
      lst2.AddRange(nums.Take(n/2)); 
    } 
+1

属性はC#で異なる意味を持ちます。 –

+2

属性の正確な使用は自分自身を理解するために重要です。あなたのコードで何numsは "変数"です。 –

+0

FYI - http://msdn.microsoft.com/en-us/library/system.attribute.aspx –

答えて

3

を有するクラスレベルプライベート変数/プロパティにINT [] NUMS定義

private int[] nums = null; 

public int merge() 

    {  
     string[] source = textBox3.Text.Split(','); 
     nums = new int[source.Length];//i want to use nums in mergesort() too,how can i do that?  
     for (int i = 0; i < source.Length; i++)  
      { 
       nums[i] = Convert.ToInt32(source[i]); 
      } 


    } 

は、mergesort関数でnumsを使用するようになりました。

+1

@arash:この例では、numsは "フィールド" –

1

問題であると思われる書き込み

public int mergesort(int[] nums) 
{ 
    // ... 
} 

+0

私はマージに存在するnumsを使用したい)、新しい番号ではありません – Arash

+0

これらのメソッドは、同じクラスの一部ですか? –

+2

@arash:numをパラメータとして宣言しても、新しいnumは作成されません。プログラミングで非常に重要な概念なので、[パラメータ](http://en.wikipedia.org/wiki/Parameter_(computer_science%29))を学ぶべきです –

1

クラスレベルの変数はあなたのため作業がだろうが、私は最終的なリファクタリングの可能性が高いソートが別のクラスであることを指示なるのでmergesortへのパラメータとしてnumsを送信することをお勧めします。

public int mergesort(int[] nums) 
{ 
    ... 
} 
関連する問題