2011-03-07 64 views
0

所以,基本上我所堅持的是,例如,如果我有一個如下所示的代碼,那麼我應該如何在結構中構造方法,以便在調用時顯示所有N個結構元素。如何在結構中創建一個方法來顯示它的數組?

struct MyStructure 
{ 
    int ID; 
    string Name; 
    public Method() 
    { 
     ????????? 
    } 
} 

.....方案的主要部分.....

MyStructure[] List=New MyStructure[N]; 
+0

這是功課? – 2011-03-07 14:00:23

+0

我猜你不能 – BlackBear 2011-03-07 14:02:18

+0

不是。我的學校不教C#。這是一種自我訓練的任務,但我搜索了幾個教程,沒有人涉及與此類似的例子。 – BaltazarDZ 2011-03-07 14:03:57

回答

2

單個元素不是數組,除非你做一些事來使提供的數組,所以元素*將有權訪問該數組。相反 - 這將有機會獲得自己(又名'THI

什麼你可能做的是使該方法static

public static void Method(IEnumerable<MyStructure> items) 
{ 
    foreach(var item in items) Console.WriteLine(item.Name); 
} 
... 
MyStructure.Method(List); 

附註(無關):我懷疑struct是這裏的正確選擇;它很少是...始終默認爲class,除非你能說出究竟爲什麼你使它成爲一個struct

1

你試圖實例方法添加到項目中包含之內。它可能更好地使用類似的擴展方法,如:

public static void DisplayNames(this IEnumerable<MyStructure> items) 
{ 
    foreach (MyStructure structure in items) 
     Console.WriteLine(structure.Name); 
} 

古稱:

list.DisplayNames(); 

你可以只使用一個普通的靜態方法,但我會質疑是否顯示任何信息的過程真正涉及到類型本身的目的,或者顯示過程是否應該留給消費結構的任何類型。

0

什麼你可能是以後這樣的事情,這確實讓一些常識:

class MyClass 
{ 
    private static List<MyClass> instances = new List<MyClass>(); 

    public int ID { get; set; } 
    public string Name { get; set; } 

    public MyClass(int id, string name) 
    { 
     this.ID = id; 
     this.Name = name; 
     instances.Add(this); 
    } 

    public override string ToString() 
    { 
     return string.Format("ID = {0}, Name = {1}", this.ID, this.Name); 
    }  

    public Method() 
    { 
     instances.ForEach(mc => Console.WriteLine(mc.ToString())); 
    } 
} 

這將增加您創建的全局(靜態)列表中的每個實例未連接到特定的實例,那麼你可以隨時顯示/使用這個列表。

正如別人所說,使用class,而不是struct

0

這裏是另一種方式如何使用結構做...

class Program 
{ 
    public struct MyStructure 
    { 
     public int ID { get; set; } 
     public string Name { get; set; } 

     public void Method(int Current, int Total) 
     { 
      if (Current < Total) 
      { 
       System.Console.WriteLine(Current + ". " + this.Name); 
       this.Method(Current + 1, Total); 
      }; 
     } 
    } 

    static void Main(string[] args) 
    { 
     const int N = 100; 
     MyStructure[] List = new MyStructure[N]; 
     List[0].Name = "Name"; 
     List[0].Method(0,N); 
    } 
} 

只是簡單的鏈接列表...

相關問題