2011-03-07 24 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); 
    } 
} 

只是简单的链接列表...

相关问题