我创建两种方法来反转字符数组,当我给长度到一个临时字符数组,然后做反向,它的工作原理(梅索德:reversChar:“字符[] tempChar =新字符[testChar.Length];”),但是,当我给值到temp char数组,然后做反向,它不工作(梅索德:reversCharVersion2: “字符[] tempChar = testChar;”)。任何人都可以看的问题,并帮助我找到了原因,非常感谢。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Test
{
class Test
{
public char[] reversChar(char[] testChar)
{
char[] tempChar = new Char[testChar.Length];
for (int i = 0; i < testChar.Length; i++)
{
tempChar[i] = testChar[(testChar.Length - 1) - i];
}
return tempChar;
}
public char[] reversCharVersion2(char[] testChar)
{
char[] tempChar = testChar;
for (int i = 0; i < testChar.Length; i++)
{
tempChar[i] = testChar[(testChar.Length - 1) - i];
}
return tempChar;
}
static void Main(string[] args)
{
//Vorbereitung Test Data
Test myTest = new Test();
char[] testChar = { '1', '2', '3', '4', '5' };
char[] outputChar;
//Methode 1 funktioniert
outputChar = myTest.reversChar(testChar);
Console.WriteLine(outputChar);
//Methode 2 funktioniert nicht
outputChar = myTest.reversCharVersion2(testChar);
Console.WriteLine(outputChar);
}
}
}
第一个是不逆转。它只是复制原始字符数组,以相反的顺序一个新的数组。
但是在第二种情况下,您使用的是相同的阵列,它们的值越来越更换了相同的地方。您在第二种情况下所得到的输出是54345,您需要使用下面的第二种情况下的代码
public char[] reversCharVersion2(char[] testChar)
{
char[] tempChar = testChar;
char temp;
for (int i = 0; i < (testChar.Length/2); i++)
{
temp = tempChar[i];
tempChar[i] = testChar[(testChar.Length - 1) - i];
testChar[(testChar.Length - 1) - i] = temp;
}
return tempChar;
}