调试工作版本,显示其他详细信息C#

调试工作版本,显示其他详细信息C#,c#,.net,C#,.net,我正在调试一个函数,它向我显示了良好的结果,如果我在发布时测试它,它会显示不同的结果 这是: int index = 0; char[] result = new char[input.Length]; for (int i = 0; i < input.Length; i++) { System.Random RandNum = new System.Random(); int MyRando

我正在调试一个函数,它向我显示了良好的结果,如果我在发布时测试它,它会显示不同的结果

这是:

int index = 0;
        char[] result = new char[input.Length];
        for (int i = 0; i < input.Length; i++)
        {
            System.Random RandNum = new System.Random();
            int MyRandomNumber = RandNum.Next(0, 100);
            if ((input[i] == '|') && (MyRandomNumber < 35))
            {
                result[index++] = ' ';
            }
            else
                result[index++] = input[i];
        }
        return new string(result, 0, index);
int索引=0;
char[]结果=新字符[input.Length];
for(int i=0;i
我有一个字符串,例如:“how | you's | doing | today”,我想将35%的|字符替换为“”(空格)

例如,在调试过程中,它会显示:您今天做得怎么样,在发布中,您今天做得怎么样,或者您今天做得怎么样

你觉得怎么样


如果您还有其他建议,我愿意接受。

您的问题几乎肯定与您创建随机数的方式有关。如果您创建了一个新的System.Random,但未向其传递种子,它将使用当前时间。如果这种情况发生得足够快,新对象将使用相同的种子创建,因此将为每个随机数提供相同的数字

要解决此问题,请按如下方式更改代码:

    int index = 0;
    char[] result = new char[input.Length];
    System.Random RandNum = new System.Random();
    for (int i = 0; i < input.Length; i++)
    {
        int MyRandomNumber = RandNum.Next(0, 100);
        if ((input[i] == '|') && (MyRandomNumber < 35))
        {
            result[index++] = ' ';
        }
        else
            result[index++] = input[i];
    }
    return new string(result, 0, index);
int索引=0;
char[]结果=新字符[input.Length];
System.Random RandNum=new System.Random();
for(int i=0;i

也许其他人可以解释为什么这只发生在发行版中,那部分我真的不明白。调试需要更长的时间,所以种子是不同的

你的问题几乎肯定与你创建随机数的方式有关。如果您创建了一个新的System.Random,但未向其传递种子,它将使用当前时间。如果这种情况发生得足够快,新对象将使用相同的种子创建,因此将为每个随机数提供相同的数字

要解决此问题,请按如下方式更改代码:

    int index = 0;
    char[] result = new char[input.Length];
    System.Random RandNum = new System.Random();
    for (int i = 0; i < input.Length; i++)
    {
        int MyRandomNumber = RandNum.Next(0, 100);
        if ((input[i] == '|') && (MyRandomNumber < 35))
        {
            result[index++] = ' ';
        }
        else
            result[index++] = input[i];
    }
    return new string(result, 0, index);
int索引=0;
char[]结果=新字符[input.Length];
System.Random RandNum=new System.Random();
for(int i=0;i

也许其他人可以解释为什么这只发生在发行版中,那部分我真的不明白。调试需要更长的时间,所以种子是不同的

您正在以错误的方式使用System.Random。您的种子值每次都相同。你知道即使你修改了代码也不能保证它会用空格替换35%的字符,对吗?你最好做一个小的随机数。你用的是不正确的方式。您的种子值每次都相同。你知道即使你修改了代码也不能保证它会用空格替换35%的字符,对吗?你最好做一个小的随机数。