声明和使用全局数组c#

th3*_*guy 7 c# global-variables

我找不到与此问题有关的任何信息.我正在尝试在C#中创建一个全局数组,以便我可以在代码中的不同位置输入信息,然后稍后再调用该信息来显示它.例如,我想获取以下信息并将其放入数组中:

string auctionID;
string itemName;
string itemID;
string bid;
string buyout;
string quantity;
Run Code Online (Sandbox Code Playgroud)

然后我希望能够使用for循环或类似的东西调用该数组,以便我可以在以后显示该信息.现在,我忘了提到的一件小事是,我可能需要一个数组数组或一个多维数组.这是因为我将有很多不同的拍卖和每次拍卖的数据(因此上面的变量),我想在程序的最后显示这些信息.感谢您的时间!

更新1

所以,我认为我并没有说清楚,因为我感到困惑,但这也可能是因为我对这个程序感到有些沮丧.我希望能够创建一个全局数组,然后在程序中使用不同的函数获取和设置存储在该数组中的信息,因为不同的函数将修改该数组的不同部分.另外,我不介意使用缓存,如果我理解它是如何工作的,甚至有一个链接来阅读它.最后一件事是,我在Windows Phone 7上这样做,所以我可以使用哪些库和系统调用.

更新2

我在OOP上有点生疏,所以我将更多地阅读它(感谢处理大量HTML并且没有机会进行真正的编程).谢谢大家的建议.如果我不能弄清楚什么,我可能会回复这个话题.干杯!

小智 11

我不建议您使用全局数组,不是最佳实践,您需要的是数据存储库并从那里获取您想要使用的数据,关于您想要使用的结构我建议您做这样的事情:

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;} 
}
Run Code Online (Sandbox Code Playgroud)

然后使用该特定对象的List来访问您的数据.

List<Auction> acutions = new List<Auction>();
Run Code Online (Sandbox Code Playgroud)

然后,您可以根据需要添加或删除项目.

auctions.Add(auction object);
auctions.remove(auction object);
Run Code Online (Sandbox Code Playgroud)

或者使用foreach循环浏览列表

foreach (Auction item in auctions)
{
 // your code to handle items here
}
Run Code Online (Sandbox Code Playgroud)


dgv*_*vid 8

全局变量几乎总是一个坏主意,因此C#使创建它们变得困难.但是,如果你真的想,你可以这样做:

public static class GlobalData
{
    public static string[] Foo = new string[16];
};

// From anywhere in your code...
Console.WriteLine(GlobalData.Foo[7]);
Run Code Online (Sandbox Code Playgroud)

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