use*_*569 0 c# string concatenation
所以我正在尝试制作一个简单的骰子滚动程序,我将在未来的项目中使用但是我遇到了一些问题.我希望能够选择2个随机数,然后将这些数字放入文本框中的句子中.当然我意识到我无法将整数与字符串连接起来,所以起初我尝试将整数转换为字符串,但这不起作用.所以现在我有这个:
Random r1 = new Random();
Random r2 = new Random();
int dice1Number;
int dice2Number;
string dice1Text;
string dice2Text;
private void button1_Click(object sender, EventArgs e)
{
var r1 = new Random();
dice1Number = r1.Next(1, 6);
var r2 = new Random();
dice2Number = r2.Next(1, 6);
if (dice1Number == 1)
{
dice1Text = "1";
}
else if (dice1Number == 1)
{
dice1Text = "2";
}
else if (dice1Number == 1)
{
dice1Text = "3";
}
else if (dice1Number == 1)
{
dice1Text = "4";
}
else if (dice1Number == 1)
{
dice1Text = "5";
}
else if (dice1Number == 1)
{
dice1Text = "6";
}
if (dice2Number == 1)
{
dice2Text = "1";
}
else if (dice2Number == 1)
{
dice2Text = "2";
}
else if (dice2Number == 1)
{
dice2Text = "3";
}
else if (dice2Number == 1)
{
dice2Text = "4";
}
else if (dice2Number == 1)
{
dice2Text = "5";
}
else if (dice2Number == 1)
{
dice2Text = "6";
}
textBox1.Text = "You rolled " + dice1Text ", " + dice2Text;
}
Run Code Online (Sandbox Code Playgroud)
我认为这种方法可能会更好,但现在我收到的错误是"只有赋值,调用,递增,递减和新对象表达式才能用作语句".知道如何解决这个或其他方式,我可以使这项工作?
你应该能够使用string.Format
string.Format("You rolled {0},{1}", dice1Number, dice2Number);
Run Code Online (Sandbox Code Playgroud)
有了它,你不需要if大块.您还可以将int字符串转换为如下字符串:
dice1Number.ToString();
Run Code Online (Sandbox Code Playgroud)
这会将其转换为字符串.
在一个不相关的注释 - 你有一个全局Randomr1,但然后在你的方法中重新声明它.您应该只重用Random对象,而不为要生成的每个随机数声明一个新对象.
要清理此代码(假设您不需要存储骰子卷,只想显示已滚动的内容),您可以更改按钮单击代码,如下所示:
private Random _rand = new Random();
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = string.Format("You rolled {0}, {1}", _rand.Next(1,7), _rand.Next(1,7);
}
Run Code Online (Sandbox Code Playgroud)