如何在类中创建一个2d数组,将名称和价格作为字符串存储在C#中?

如何在类中创建一个2d数组,将名称和价格作为字符串存储在C#中?,c#,class,multidimensional-array,C#,Class,Multidimensional Array,如何在类中创建以字符串形式存储名称和价格的二维数组?如何在不使用对象的情况下从窗体访问它?到目前为止,我在班上有以下几点 class Name { public string SpecialCakeName() { string[,] strSpecialCakeName = new string[4, 2]; strSpecialCakeName[0, 0] = " "; strSpecialCakeName[0, 1] = "

如何在类中创建以字符串形式存储名称和价格的二维数组?如何在不使用对象的情况下从窗体访问它?到目前为止,我在班上有以下几点

class Name
{
    public string SpecialCakeName()
    {
        string[,] strSpecialCakeName = new string[4, 2];

        strSpecialCakeName[0, 0] = " ";
        strSpecialCakeName[0, 1] = " ";
        strSpecialCakeName[1, 0] = " ";
        strSpecialCakeName[1, 1] = " ";
        strSpecialCakeName[2, 0] = " ";
        strSpecialCakeName[2, 1] = " ";
        strSpecialCakeName[3, 0] = " ";
        strSpecialCakeName[3, 1] = " ";

        return strSpecialCakeName[0,0];
    }
}
然而,我不知道这是否是正确的方法。另外,如果不使用诸如“Name cakeName=new Name();”之类的内容,我如何能够访问此数组在我的表格中?

我建议一个对象。使用字符串存储价格信息是个坏主意。字典将允许您将字符串蛋糕名称映射为十进制价格,而无需定义整个自定义对象(不过,实际上,这可能正是您需要的)

要在不需要类实例的情况下访问字典,请按如下方式构建:

public class Names
{
    private static Dictionary<string, decimal> _specialCakes = new Dictionary<string,decimal>{
                {"Cake 1", 1.00m},
                {"Cake 2", 2.50m},
                {"Cake 3", 4.00m}
          };

    public static Dictionary<string, decimal> SpecialCakes {
           get {return _specialCakes;}
    }
}
decimal Cake1Price = Names.SpecialCakes["Cake 1"];
foreach(string name in Names.SpecialCakes.Keys)
{
    //and within the loop reference a price for that cake like this:
    decimal currentPrice = Names.SpecialCakes[name];
}
或者循环浏览所有蛋糕名称的列表,如下所示:

public class Names
{
    private static Dictionary<string, decimal> _specialCakes = new Dictionary<string,decimal>{
                {"Cake 1", 1.00m},
                {"Cake 2", 2.50m},
                {"Cake 3", 4.00m}
          };

    public static Dictionary<string, decimal> SpecialCakes {
           get {return _specialCakes;}
    }
}
decimal Cake1Price = Names.SpecialCakes["Cake 1"];
foreach(string name in Names.SpecialCakes.Keys)
{
    //and within the loop reference a price for that cake like this:
    decimal currentPrice = Names.SpecialCakes[name];
}

改用字典

Dictionary<string, decimal> strSpecialCakeName = new Dictionary<string, decimal>();
strSpecialCakeName.Add({"somename", 100/*some decimal price*/});
Dictionary strSpecialCakeName=newdictionary();
添加({“somename”,100/*一些十进制价格*/});
将其设置为静态:

public static string SpecialCakeName()
{
...
}
然后可以使用类类型调用它:

string[,] names = Name.SpecialCakeName();

不要将价格信息存储为字符串。别这样。相反,对于与金钱有关的任何事情,都应使用十进制类型,并且在向用户显示之前,只能在最后一刻转换为字符串。您必须使用数组,或者可以使用列表或字典吗?@MarcDeletang,是的,我必须使用数组。您的字典定义未编译,我更新了它appropriately@Kiviuq那么你应该这样做。既然作业已经完成,你就不必担心在就业市场上没有的学术限制。@Kiviuq这是一个人为的例子。他们要求您这样做,以帮助您熟悉多维数组和锯齿数组的语法。然而,匹配价格信息并不是一个很好的例子,你的教授最好给出一个匹配两个不同字符串的例子。。。一个想法是名/姓配对。@JoelCoehoorn,谢谢你。是的,我注意到我的教授使用了可回收的材料,并给我们提供了补充说明,这些补充说明看起来像是来自幻灯片演示,但从在线角度来看,它们并不总是有意义的。我已经给他发了十几封电子邮件,还没有得到他的回复。这是相当令人沮丧的,但你需要你的帮助。干杯当我输入你的类类型时,我得到一个错误,说“非静态字段、方法或属性”System.Windows.Form.Control.Name.get'ah,名称是Framework System.Windows.Form.Control属性需要对象引用。当你调用Name.SpecialCakeName()时,在你的Name类前面指定完整的命名空间或者更好-将您的名称类名称更改为更具描述性的名称。