2010-12-29 6 views
1

Wie kann ich Attribut einer Methode in eine andere Methode verwenden?Attribut einer Methode in eine andere Methode verwenden

zum Beispiel: (i kommentiert in verwandten Linien)

ich habe

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]); 
     } 
      } 

und

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

Attribute eine andere Bedeutung in C# ... –

+2

Korrekte Verwendung der Nomenklatur ist wichtig, sich verständlich zu machen. Was nums in Ihrem Code ist, ist eine "Variable". –

+0

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

Antwort

3

int [] nums auf Klassenebene private Variable/Eigenschaft definieren

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]); 
      } 


    } 

verwenden Sie nun Zahlen in der Mergesort-Funktion.

+1

@arash: in diesem Beispiel ist nums ein "Feld" –

1

schreiben

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

, dass das Problem zu sein scheint.

+0

Ich möchte num verwenden, die in merge vorhanden sind (), keine neuen Nummern – Arash

+0

sind diese Methoden Teil der gleichen Klasse? –

+2

@arash: Die Angabe von nums als Parameter erzeugt keine neuen num. Sie sollten lernen über [Parameter] (http://en.wikipedia.org/wiki/Parameter_ (computer_science% 29), weil sie ein sehr wichtiges Konzept in der Programmierung sind –

1

Während eine Variable auf Klassenebene würde für Sie Arbeit, empfehle ich nums als Parameter mergesort weil das eventuelle Refactoring wahrscheinlich zu senden würde in einer anderen Klasse diktieren würde die Art sein.

public int mergesort(int[] nums) 
{ 
    ... 
} 
Verwandte Themen