-2

クラスで名前と価格を文字列として格納する 2 次元配列を作成するにはどうすればよいですか? また、オブジェクトを使用せずにフォームからアクセスできるようにするにはどうすればよいですか? これまでのところ、クラスには次のものがあります。

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();」のようなものを使用せずに、この配列にアクセスするにはどうすればよいでしょうか。私の形で?

4

3 に答える 3

4

Dictionaryオブジェクトをお勧めします。文字列を使用して価格情報を保存することはお勧めできません。Dictionary<string,decimal> を使用すると、カスタム オブジェクト全体を定義する必要なく、文字列のケーキ名を 10 進数の価格にマップできます (実際には、それが必要な場合もあります)。

クラスのインスタンスを必要とせずに辞書にアクセスするには、次のようにビルドします。

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];
}
于 2012-11-19T20:33:37.627 に答える
1

静的にします:

public static string SpecialCakeName()
{
...
}

次に、クラス タイプを使用して呼び出すことができます。

string[,] names = Name.SpecialCakeName();
于 2012-11-19T20:35:14.017 に答える
0

代わりに辞書を使用してください。

Dictionary<string, decimal> strSpecialCakeName = new Dictionary<string, decimal>();
strSpecialCakeName.Add({"somename", 100/*some decimal price*/});
于 2012-11-19T20:33:44.733 に答える