**代码:**
String test = "32132SSS654";
char Lastchar = test[test.Length - 1];
Assert.IsTrue((Lastchar).Equals("4"));
我正在尝试从字符串中获取最后一个字符,然后执行断言但它返回了一些额外的内容,例如 52 ,最后一个字符 4 ,这就是为什么我断言获取失败。
答案 0 :(得分:3)
最后一个字符是char
而不是string
:
Assert.IsTrue((Lastchar).Equals('4'));
(char
文字使用单引号。
答案 1 :(得分:2)
Lastchar
的值是正确的。 52
是字符4
的十进制表示/值(请参阅ASCII table)。它只是一个特定于调试的显示器。
答案 2 :(得分:2)
问题是,在Equals
来电中,您要将char
与string
进行比较(&#34; 4&#34; ):< / p>
char Lastchar = test[test.Length - 1];
Assert.IsTrue((Lastchar).Equals("4"));
返回false,因为类型不同。如果您与&#39; 4&#39; 的char
进行比较,则会返回true:
Assert.IsTrue((Lastchar).Equals('4'));
答案 3 :(得分:1)
52是 character-4 的ASCII值,你将它错误地与"4"
进行比较,这是一种字符串类型。
在C#中,将值用双引号括起来是一个字符串值。当您将它们放在单引号中,这些引号变为char值并且在单引号内时,您可以放置任何单个 char值。
将您的代码更改为 -
Assert.IsTrue((Lastchar).Equals('4'));
Assert
不仅可以比较值,还可以比较对象的类型是否相等。所以,如果你比较像 -
Assert.IsTrue((4).Equals('4'));
会返回false,因为它将int值与一个永远不会相等的char值进行比较。