如何为c#中列表框中的项目赋值?

如何为c#中列表框中的项目赋值?,c#,visual-studio-2010,listbox,C#,Visual Studio 2010,Listbox,我有一个列表框,里面有不同的蛋糕。如何给每个蛋糕定价,并让我的标签显示所选蛋糕的总成本?以下是我到目前为止的代码 for (int index = 0; index < lstCakes.SelectedItems.Count; index++) { strCakes += Environment.NewLine + lstCakes.SelectedItems[index].ToString(); } double tax = 1

我有一个列表框,里面有不同的蛋糕。如何给每个蛋糕定价,并让我的标签显示所选蛋糕的总成本?以下是我到目前为止的代码

for (int index = 0; index < lstCakes.SelectedItems.Count; index++)
        {
            strCakes += Environment.NewLine + lstCakes.SelectedItems[index].ToString();
        }

double tax = 1.13;
        lblOrdered.Text = "You have ordered: " + strCakes + '\n' + "Total Cost: " + (tax * cakeCost).ToString("C");

如果您有任何建议,我们将不胜感激。

假设这是一个桌面应用程序,您可能希望将您的价格放入配置文件中,以便以后可以更改。您添加了一个
)。通过这种方式,您可以为每个条目动态创建文本。如果您希望每一行都包含价格,则必须将其硬编码到该行的文本中。(我想这就是你要问的……)

最后一个音符。不应使用+连接字符串。C#中的字符串是不可变的——这意味着字符串本身无法修改(如果您愿意,我可以解释另一个主题的原因)。为了用“+”连接两个字符串,C#需要创建第三个字符串并用前两个字符串的内容填充它,这会降低性能。要更有效地连接字符串,请使用
StringBuilder
对象和
Append()
方法,或者使用与此相同的
String.Format()


不可变字符串:

int TotalCost;
for (int index = 0; index < lstCakes.SelectedItems.Count; index++)
{
  strCakes += Environment.NewLine + lstCakes.SelectedItems[index].ToString();

  //The name of the List Items should match the names on the enum,for this to work
  TotalCost += (int)Enum.Parse(typeof(CakePrices),
                               lstCakes.SelectedItems[index].ToString() ,
                               false)
}

Console.WriteLine("You have ordered:" + strCakes + '\n' + "Total Cost: " + TotalCost);
字符串的核心是字符数组。正如不能调整数组大小一样,也不能调整字符串大小。这是因为数组存储在堆栈上。。。堆栈是一块内存,内存中充满了运行程序的指令,这些指令彼此“堆叠”在一起。堆栈内存是预先分配的,出于所有目的,您不能动态更改堆栈上对象的内存占用。您可以有一个包含5个整数和5个空格的10个整数的数组,但不能将
int[5]
更改为
int[10]
。如果要在
int[5]
中再添加5个int,则需要实例化一个新的
int[10]
并填充它。同样的事情也适用于字符串


数组大小调整问题的解决方案是使用列表及其导数来处理的。它们使用堆内存运行。这与StringBuilder对象的功能类似。如果您想更多地了解堆栈和堆内存以及它如何影响程序的运行,这可能会帮助您更好地理解。了解这一点非常重要,因为它可以解释许多困扰初学者的谜团。问得好。

蛋糕价格可以保持在一个枚举上

enum CakePrices{
ChocCake = 20,
VanillaCake = 50
}
计算成本:

int TotalCost;
for (int index = 0; index < lstCakes.SelectedItems.Count; index++)
{
  strCakes += Environment.NewLine + lstCakes.SelectedItems[index].ToString();

  //The name of the List Items should match the names on the enum,for this to work
  TotalCost += (int)Enum.Parse(typeof(CakePrices),
                               lstCakes.SelectedItems[index].ToString() ,
                               false)
}

Console.WriteLine("You have ordered:" + strCakes + '\n' + "Total Cost: " + TotalCost);
int总成本;
对于(int index=0;index
非常感谢您的回答,也感谢您提出的想法。我应该更好地解释一下,这是针对Windows窗体应用程序的。我想进一步了解为什么C#中的字符串是不可变的。@levid再次感谢您提供的额外帮助。我非常感激。我一定会看看你提供的链接。干杯