C#如何将一个结构体数组变量弄成全局变量
这几天,我们专业要进行程序课程设计,鄙人我选了一个关于商品销售的问题,根据题目要求,要我们输入商品的信息,包括名称、单价、单位,因为只是个小程序,数据量不大,只需要10个...
这几天,我们专业要进行程序课程设计,鄙人我选了一个关于商品销售的问题,根据题目要求,要我们输入商品的信息,包括名称、单价、单位,因为只是个小程序,数据量不大,只需要10个商品,题目要求我们不要涉及到数据库,于是我就设了一个结构体,并建了一个数组,代码段如下
首先,我声明了结构体
public struct record
{
public string goodsname;/*商品名称*/
public string scale;/*商品单位*/
public double price;/*商品单价*/
}
然后,我在这一事件中实例化一个record数组初始化了
private void Form1_Load(object sender, EventArgs e)
{
record[] goodsinfo = new record[10];
goodsinfo[0].goodsname = "哇哈哈矿泉水550ml";
goodsinfo[0].scale = "瓶";
goodsinfo[0].price = 1;
goodsinfo[1].goodsname = "康师傅红烧牛肉面";
goodsinfo[1].scale = "袋";
goodsinfo[1].price = 1.5;
…………
}
最后因为商品选购完后要计算总价,我原本打算在完成这一按钮里面的click事件里面引用goodsinfo的一些信息,后来发现不行,然后思考了一下,貌似goodsinfo的这一数组貌似是局部变量,本想在 record[] goodsinfo = new record[10];这一语句前加static的,但提示说,修饰符static对该项无效。。。。于是。。。。。于是。。。。。我这个弱弱地菜鸟只好弱弱的请求大虾们帮忙了,有什么办法让goodsinfo这一数组成为全局变量能被引用? 要有代码示例,谢谢 展开
首先,我声明了结构体
public struct record
{
public string goodsname;/*商品名称*/
public string scale;/*商品单位*/
public double price;/*商品单价*/
}
然后,我在这一事件中实例化一个record数组初始化了
private void Form1_Load(object sender, EventArgs e)
{
record[] goodsinfo = new record[10];
goodsinfo[0].goodsname = "哇哈哈矿泉水550ml";
goodsinfo[0].scale = "瓶";
goodsinfo[0].price = 1;
goodsinfo[1].goodsname = "康师傅红烧牛肉面";
goodsinfo[1].scale = "袋";
goodsinfo[1].price = 1.5;
…………
}
最后因为商品选购完后要计算总价,我原本打算在完成这一按钮里面的click事件里面引用goodsinfo的一些信息,后来发现不行,然后思考了一下,貌似goodsinfo的这一数组貌似是局部变量,本想在 record[] goodsinfo = new record[10];这一语句前加static的,但提示说,修饰符static对该项无效。。。。于是。。。。。于是。。。。。我这个弱弱地菜鸟只好弱弱的请求大虾们帮忙了,有什么办法让goodsinfo这一数组成为全局变量能被引用? 要有代码示例,谢谢 展开
1个回答
展开全部
public static record[] goodsinfo;
private void Form1_Load(object sender, EventArgs e)
{
goodsinfo = new record[10];
注:因为不确定商品数量,建议你用List取代数组,也就是形如
public static List<record> goodsinfo;
private void Form1_Load(object sender, EventArgs e)
{
goodsinfo = new List<record>();
record rec=new record();
rec.goodsname = "哇哈哈矿泉水550ml";
rec.scale = "瓶";
rec.price = 1;
goodsinfo.Add(rec);
rec=new record();
rec.goodsname=xxx;
用List的好处是随时可以添加或者删除元素
private void Form1_Load(object sender, EventArgs e)
{
goodsinfo = new record[10];
注:因为不确定商品数量,建议你用List取代数组,也就是形如
public static List<record> goodsinfo;
private void Form1_Load(object sender, EventArgs e)
{
goodsinfo = new List<record>();
record rec=new record();
rec.goodsname = "哇哈哈矿泉水550ml";
rec.scale = "瓶";
rec.price = 1;
goodsinfo.Add(rec);
rec=new record();
rec.goodsname=xxx;
用List的好处是随时可以添加或者删除元素
追问
这样写,在click事件中是不是要重新赋值?
追答
不需要,你在其它地方就可以直接使用goodsinfo[0]、goodsinfo[1]这种来取得数据(如果是在其它类中调用,假定你这个goodsinfo所在类叫form1,那就可以在其它地方用form1.goodsinfo来调。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询