声明和使用全局数组c#

声明和使用全局数组c#,c#,global-variables,C#,Global Variables,我找不到任何关于这个问题的信息。我试图在C#中创建一个全局数组,这样我就可以在代码中的不同点向其中输入信息,然后稍后再调用该信息来显示它。例如,我想获取以下信息并将其放入数组中: string auctionID; string itemName; string itemID; string bid; string buyout; string quantity; 然后,我希望能够使用for循环或类似的东西调用该数组,以便以后可以显示该信息。现在,我忘了提到的一点是,我可能需要一个数组数组或多

我找不到任何关于这个问题的信息。我试图在C#中创建一个全局数组,这样我就可以在代码中的不同点向其中输入信息,然后稍后再调用该信息来显示它。例如,我想获取以下信息并将其放入数组中:

string auctionID;
string itemName;
string itemID;
string bid;
string buyout;
string quantity;
然后,我希望能够使用for循环或类似的东西调用该数组,以便以后可以显示该信息。现在,我忘了提到的一点是,我可能需要一个数组数组或多维数组。这样做的原因是因为我将有很多不同的拍卖和关于每次拍卖的数据(因此上面的变量),我想在程序的最后显示这些信息。谢谢你抽出时间

更新1

所以,我想我没有说清楚,因为我感到困惑,但这也可能是因为我现在对这个项目有点失望。我希望能够创建一个全局数组,然后在程序中使用不同的函数获取并设置存储在该数组中的信息,因为不同的函数将修改该数组的不同部分。此外,如果我了解缓存是如何工作的,甚至有一个链接可以阅读,我也不介意使用缓存。最后要补充的是,我是在WindowsPhone7上这样做的,所以我只能使用哪些库和系统调用

更新2

我对OOP有点生疏,所以我将继续阅读更多关于它的内容(多亏了大量使用HTML,而没有机会真正进行编程)。谢谢大家的建议。如果我想不出更多的东西,我可能会在这个话题上发帖。干杯

string[] values;
或声明一个特定长度:

string[] values = new string[6]; // creates an array with a length of 6.

好吧,除了一个事实,如果你在全球范围内存储东西,你可能会有一个结构性问题

您可以为此使用静态属性

 public class MyVariables
 {
     private static string[] _MyStuff
     public static string[] MyStuff
     {
           return _MyStuff;
     }
 }
然后像这样访问它:

MyVariables.MyStuff[0]
public class Auction
{
           public string auctionID {get; set;}
           public string itemName {get; set;}
           public string itemID {get; set;}
           public string bid {get; set;}
           public string buyout {get; set;}
           public int quantity {get; set;} 
}
public static class GlobalData
{
    public static string[] Foo = new string[16];
};

// From anywhere in your code...
Console.WriteLine(GlobalData.Foo[7]);
在C#中没有全局变量。只有班级成员。将数据从应用程序的一个部分传递到另一个部分的最佳方法是传递对对象(类的实例)的引用,该对象包含其成员中的所有相关数据


您也可以使用静态类,它们的行为有点像全局变量,但是当您更加熟悉面向对象编程时,您会意识到这不是一种处理数据的好方法。

我会使用类似于列表的泛型,因为您不必担心大小,并且可以在foreach循环中为其获取迭代器

List<string> values = new List<string>();
删除:

values.Remove("item");
如果需要多维,请使用:

List<List<string>> multi_dimens_values;
列出多维度值;

我认为
字典
更适合。。。您可以循环浏览它并访问特定项。并将其传递给您的方法。

这是一个非常糟糕的主意

  • 尽量避免使用全局变量。很少有实例需要一个公共的、可变的单例
  • 使用显式对象(POCO)而不是多维数组。请参见下面的示例
  • 而是根据需要从存储器中创建/保存/加载对象

    集体拍卖 { 公共长Id{get;set;} 公共字符串ItemName{get;set;} ... }


  • 我不建议您使用全局阵列,这不是最佳做法您需要的是一个数据存储库并从中获取您想要使用的数据,关于您想要使用的结构,我建议您执行以下操作:

    MyVariables.MyStuff[0]
    
    public class Auction
    {
               public string auctionID {get; set;}
               public string itemName {get; set;}
               public string itemID {get; set;}
               public string bid {get; set;}
               public string buyout {get; set;}
               public int quantity {get; set;} 
    }
    
    public static class GlobalData
    {
        public static string[] Foo = new string[16];
    };
    
    // From anywhere in your code...
    Console.WriteLine(GlobalData.Foo[7]);
    
    然后使用特定对象的列表来访问数据

    List<Auction> acutions = new List<Auction>();
    
    或者使用foreach循环在列表中导航

    foreach (Auction item in auctions)
    {
     // your code to handle items here
    }
    

    全局变量几乎总是一个坏主意,因此C#使得创建它们成为一件困难的事情。但是,如果您真的愿意,您可以这样做:

    MyVariables.MyStuff[0]
    
    public class Auction
    {
               public string auctionID {get; set;}
               public string itemName {get; set;}
               public string itemID {get; set;}
               public string bid {get; set;}
               public string buyout {get; set;}
               public int quantity {get; set;} 
    }
    
    public static class GlobalData
    {
        public static string[] Foo = new string[16];
    };
    
    // From anywhere in your code...
    Console.WriteLine(GlobalData.Foo[7]);
    

    但是,请注意,只要您被迫创建一个静态类来执行此操作,为什么不继续将实际的数组变量设置为private而不是public,然后添加static、public getter和setter方法呢?这种方法至少消除了全局变量固有的一些危险。

    不,不要这样做。现在我们不使用全局数组。使用缓存比使用全局数组更好,因为您可能会遇到并发和多线程问题。“我不知道每次单独调用数组时如何调用同一个数组,因为据我所知,C#将数组视为对象。”这没有任何意义。为什么你认为数组是对象意味着你不会“每次都得到相同的数组”?你不想“把数组包装在一个类中”。您需要创建一个拍卖类,并维护在代码中的适当位置访问的拍卖集合。如果此数据需要在多个程序运行期间保存,则需要将其持久化(数据库、文件等),并根据需要加载/保存。不要为此创建多维数组。这是错误的&trade;。有很多不同的方法来处理这个问题,正确的答案取决于你遗漏的很多信息。你最好更具体地重新表述这个问题:具体需要做什么。哦,我理解。问题是,我不知道该如何放置它,以便不同的方法可以调用该数组并使用其中的信息。技术上正确,但实际上并没有回答IMHO的问题。@thenewguy请阅读更多关于面向对象编程和设计模式的信息。您仍然在以非面向对象的方式思考。您也可以将类本身声明为静态(
    公共静态类MyVariables
    ),尽管这并不十分重要-它只会防止用户无意义地实例化对象。