Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的置乱字符串操作#_C# - Fatal编程技术网

C# C语言中的置乱字符串操作#

C# C语言中的置乱字符串操作#,c#,C#,我已经编写了一个简短的代码来检查两个加扰字符串的等价性。 但是代码并没有像预期的那样工作 代码如下所示 string firstString, secondString; Console.Write("Enter the First String: "); firstString = Console.ReadLine(); Console.Write("Enter the 2nd String: "); seco

我已经编写了一个简短的代码来检查两个加扰字符串的等价性。 但是代码并没有像预期的那样工作

代码如下所示

        string firstString, secondString;
        Console.Write("Enter the First String: ");
        firstString = Console.ReadLine();
        Console.Write("Enter the 2nd   String: ");
        secondString = Console.ReadLine();
        char[] firstArray = firstString.ToArray();
        char[] secondArray = secondString.ToArray();           
        Array.Sort(firstArray);
        Array.Sort(secondArray);
        firstString = firstArray.ToString();
        secondString = secondArray.ToString();
        if(firstString == secondString)
        {
            Console.Write("Matched");
        }
        else 
            Console.Write("Not Matched");            
            Console.ReadKey();                        
    }        
}
将以字符串格式返回数组类型。如果进行调试,您将看到
firstString
的值将为

System.Char[]

而不是数组的内容

因此,字符串比较将始终返回
true


为了实现您的结果,如果您可以使用
LINQ
,您可以像这样使用
SequenceEqual

Console.Write("Enter the First String: ");
var firstString = Console.ReadLine();
Console.Write("Enter the 2nd   String: ");
var secondString = Console.ReadLine();
var list1 = firstString.ToList();
var list2 = secondString.ToList();
list1.Sort();
list2.Sort();

if (list1.SequenceEqual(list2))
    Console.Write("Matched");
else
    Console.Write("Not Matched");

您使用的输入是什么?设置断点并调试代码是跟踪代码运行过程中发生的情况的最佳方法。可能与我已经做过的相同。但仍然不起作用。如果我使用foreach循环来显示字符串的字符,那么每个字符都会被排序,但是如果else循环它与另一个字符串不匹配,那么就不要使用foreach循环,只需使用实际的调试器并逐步完成它。您将看到下面的答案是正确的,您正在比较类型名的字符串和类型名的字符串,这意味着它们相等。这肯定是有效的。这是一个例子。您使用的输入是什么?
Console.Write("Enter the First String: ");
var firstString = Console.ReadLine();
Console.Write("Enter the 2nd   String: ");
var secondString = Console.ReadLine();
var list1 = firstString.ToList();
var list2 = secondString.ToList();
list1.Sort();
list2.Sort();

if (list1.SequenceEqual(list2))
    Console.Write("Matched");
else
    Console.Write("Not Matched");