【问题标题】:What does "str" + x + "str" mean?“str”+x+“str”是什么意思?
【发布时间】:2018-11-19 18:49:31
【问题描述】:

为什么要在 ImageLocation 中使用 "str" + x + "str"

 private void CreateEnemies()
    {
        Random rnd = new Random();
        int x = rnd.Next(1, kindOfEnemies + 1);
        PictureBox enemy = new PictureBox();
        int loc = rnd.Next(0, panel1.Height - enemy.Height);
        enemy.SizeMode = PictureBoxSizeMode.StretchImage;
        enemy.ImageLocation = "Aliens/" + x + ".png";

    }

我不明白你为什么要使用这个。

【问题讨论】:

  • 它将一个(随机)数字 x 插入到路径中,因此它有效地加载了一个随机图像..
  • 您不了解使用随机数构建图像路径的语法或动机?
  • @Md Rakibul Islam 如果其中一个答案解决了您的问题,请将其标记为已解决以关闭此线程。如果不是,请说明仍然缺少什么。

标签: c# string-concatenation


【解决方案1】:

+ 运算符用于添加。如果在字符串上使用它不会添加两个字符串,而是将它们连接起来:

var text = "Hello" + "World" + "String";
Console.WriteLine(text); // Prints "HelloWorldString"

所以上面的代码只是构造了一个字符串。因为变量x不是int类型,.Net会自动调用.ToString()

int x = 5;
var text1 = "Aliens/" + x +".png"; // is the same as below.
var text2 = "Aliens/" + x.ToString() +".png"; // is the same as above.

Console.WriteLine(text); // Prints "Aliens/5.png"

在 C# 版本 6 及更高版本中,您还可以使用字符串插值,这使事情更加清晰:

var text1 = $"Aliens/{x}.png"; // is the same as below.
var text2 = $"Aliens/{x.ToString()}.png"; // is the same as above.

使用字符串插值,您可以将变量嵌入到字符串中,方法是将它们放入花括号中。

注意字符串必须以$开头。

【讨论】:

    【解决方案2】:

    【讨论】:

      【解决方案3】:

      这是一种随机化你得到的外星人图像的方法。

      您的解决方案有一个名为 Aliens 的文件夹,其中包含名为 0.png1.png2.png 等的文件。每个文件都有一个“外星人”的图像,您的程序会将其加载到PictureBox 中。您的代码使用字符串连接随机选择其中一个文件。

      在 C# 6 及更高版本中,您可以使用字符串插值:

      enemy.ImageLocation = $"Aliens/{x}.png";
      

      【讨论】:

        【解决方案4】:

        它将字符串连接在一起。所以 "Aliens/" + 'x' 的字符串值 + ".png" 被‘加’在一起了。

        让我们说:

        int x = 1
        

        输出字符串是

        "Aliens/1.png"
        

        【讨论】: