C# Int/将数字列表转换为字符串?

C# Int/将数字列表转换为字符串?,c#,C#,我有一组数字,如下所示。然后我有一个随机数显示在下面。如果我想检查随机数是否等于字符串中的一个数字,我该如何做呢 public string[] List = { "5", "3","9" }; int test = random.Next(1, 10); 现在我有以下几点。除了if(test==number)之外,所有这些都适用于我的脚本,test是定义的随机数,这个数字就是我试图弄清楚如何将它引用到config.List中的数字,config.

我有一组数字,如下所示。然后我有一个随机数显示在下面。如果我想检查随机数是否等于字符串中的一个数字,我该如何做呢

          public string[] List = { "5", "3","9" };

            int test = random.Next(1, 10);
现在我有以下几点。除了if(test==number)之外,所有这些都适用于我的脚本,test是定义的随机数,这个数字就是我试图弄清楚如何将它引用到config.List中的数字,config.List是由5、3和9组成的列表。因为不能在同一if语句中使用字符串和int

         foreach (string number in config.List)
            {

                if (test == number)
                {
                    TSPlayer.All.SendSuccessMessage("counting count = {0} number = {1}", count, test);
                }

                if (test >= 5)
                {
                    int amount = 200;
                    int monsteramount = 303;
                    NPC npcs = TShock.Utils.GetNPCById(monsteramount);
                    TSPlayer.All.SendSuccessMessage("#5 exists! count = {0} number = {1}", count, test);
                    TSPlayer.Server.SpawnNPC(npcs.type, npcs.name, amount, args.Player.TileX, args.Player.TileY, 50, 20);
                    TSPlayer.All.SendSuccessMessage(string.Format("{0} has spawned {1} {2} time(s).", args.Player.Name, npcs.name, amount));
                    break;
                }
            }
        }
    }

如果我正确理解您的问题,您需要将整数的
字符串
表示形式转换为
int

可以将字符串转换为int,如下所示:

string str = "5";
int val = Convert.ToInt32(str);   // val will be 5.
string str = "5";
int val;
if ( Int32.TryParse(str, out val) ) {
    // conversion was successful, val == 5
} else { 
    // conversion failed. 
}
int val = 5;
string str = val.ToString();
foreach (string number in config.List)
{
    var val = Convert.ToInt32(number);
    if (test == val)
    {
        // ...
    }
    ...
}
foreach (string number in config.List)
{
    if (test.ToString() == number)
    {
        // ...
    }
    ...
}
如果您不能信任您的输入(即,您不能100%确定字符串是否为有效数字),则可以使用
Int32.TryParse
如下所示:

string str = "5";
int val = Convert.ToInt32(str);   // val will be 5.
string str = "5";
int val;
if ( Int32.TryParse(str, out val) ) {
    // conversion was successful, val == 5
} else { 
    // conversion failed. 
}
int val = 5;
string str = val.ToString();
foreach (string number in config.List)
{
    var val = Convert.ToInt32(number);
    if (test == val)
    {
        // ...
    }
    ...
}
foreach (string number in config.List)
{
    if (test.ToString() == number)
    {
        // ...
    }
    ...
}
或者,您可以将
int
转换为
字符串
,这是最容易做到的:

string str = "5";
int val = Convert.ToInt32(str);   // val will be 5.
string str = "5";
int val;
if ( Int32.TryParse(str, out val) ) {
    // conversion was successful, val == 5
} else { 
    // conversion failed. 
}
int val = 5;
string str = val.ToString();
foreach (string number in config.List)
{
    var val = Convert.ToInt32(number);
    if (test == val)
    {
        // ...
    }
    ...
}
foreach (string number in config.List)
{
    if (test.ToString() == number)
    {
        // ...
    }
    ...
}
更新

为了更具体,您需要使用第一种方法,如下所示:

string str = "5";
int val = Convert.ToInt32(str);   // val will be 5.
string str = "5";
int val;
if ( Int32.TryParse(str, out val) ) {
    // conversion was successful, val == 5
} else { 
    // conversion failed. 
}
int val = 5;
string str = val.ToString();
foreach (string number in config.List)
{
    var val = Convert.ToInt32(number);
    if (test == val)
    {
        // ...
    }
    ...
}
foreach (string number in config.List)
{
    if (test.ToString() == number)
    {
        // ...
    }
    ...
}
或者您需要使用第二种方法,如下所示:

string str = "5";
int val = Convert.ToInt32(str);   // val will be 5.
string str = "5";
int val;
if ( Int32.TryParse(str, out val) ) {
    // conversion was successful, val == 5
} else { 
    // conversion failed. 
}
int val = 5;
string str = val.ToString();
foreach (string number in config.List)
{
    var val = Convert.ToInt32(number);
    if (test == val)
    {
        // ...
    }
    ...
}
foreach (string number in config.List)
{
    if (test.ToString() == number)
    {
        // ...
    }
    ...
}
无论如何,你必须确保你的类型匹配

更新2

这就是您在问题中的代码,现在(结合顶部和底部),只有一个更改,应该可以消除这一个编译错误:

public string[] List = { "5", "3","9" };

int test = random.Next(1, 10);

foreach (string number in config.List)
{
    if (test.ToString() == number)  // This is the line I changed
    {
        // do your thing
    }

    if (test >= 5)
    {
        int amount = 200;
        int monsteramount = 303;
        NPC npcs = TShock.Utils.GetNPCById(monsteramount);
        TSPlayer.All.SendSuccessMessage("#5 exists! count = {0} number = {1}", count, test);
        TSPlayer.Server.SpawnNPC(npcs.type, npcs.name, amount, args.Player.TileX, args.Player.TileY, 50, 20);
        TSPlayer.All.SendSuccessMessage(string.Format("{0} has spawned {1} {2} time(s).", args.Player.Name, npcs.name, amount));
        break;
    }
}

问题的文本意味着您希望列表中的所有值都放在字符串中,但您的示例意味着您只想知道列表是否包含特定值。你在找哪一个?我正试着列出数字,并从random()中得到第二个数字bchosen;如果恰好与列表中的一个数字相等,则会发出定义命令。如果仍希望数字的行为与数字相同,则不应使用字符串创建数字列表。使用数组、列表或更接近真实数据类型的东西。我尝试将字符串转换为值,我尝试使用convert.ToInt32(字符串),但我尝试使用值列表而不仅仅是5,因此,例如,我有下面的示例,但转换为int似乎只适用于一个数字,而不是一个数字列表。公共字符串[]列表={“5”、“6”、“7”、“8”、“9”};if(test!=Convert.ToInt32(config.List))
if(test==number)
是代码不编译的地方,对吗?您处于一个
foreach
循环中,一次检查列表中的每个项目。是吗?是的,因为数字(字符串数字)是一个不是int的字符串,所以我尝试将数字字符串设置为int值,这样,如果m random number(test)等于列表中的一个数字,它将执行一个命令,否则它将忽略该命令,并在else语句中执行另一个命令。是的。因此,您可以这样做:
如果(test.ToString()==number)
那么我会得到一个错误,因为转换为字符串的随机数不能与==进行比较,因为作为我的数字列表的字符串是字符串[],或者正如我的c#“error 3 Operator”!='不能应用于'string'和'string[]类型的操作数。”你能详细说明一下吗?我不知道该详细说明什么。使用LINQ和int.parse将其转换为整数列表,然后使用list.Contains查找目标编号。就这样。把它加到你的帖子里。向OP解释你在做什么以及为什么。这会将列表转换为bool,但你不能将bool和int混合,所以你可以定义它,但我不知道如何真正实现它。它会将列表转换为数字列表,然后检查你要查找的数字是否在其中。