我正在编码,需要建立一个文件名。我想用_。
分隔文件名的各个部分我认为,因为我只想添加char,所以我可以使用'_'
。
int id = 125;
string testWithChar = id + '_' + "Something";
Console.WriteLine(testWithChar);
但是,当我这样做时,我得到了这个:
220Something
有点奇怪。
但如果我做得对:
int id = 125;
string testWithString = id + "_" + "Something";
Console.WriteLine(testWithString);
我得到了预期的输出:
125_Something
但我很好奇。第一个给我一个不同数字的实际情况是什么?
答案 0 :(得分:3)
原因是,C#将char视为unicode值,因此它们之间的相加不会添加字符串,而是整数。
ascii中的_
为95,因此
int id = 125;
string testWithChar = id + '_' + "Something";
是等效的:
string testWithChar = 125 + 95 + "Something";
相反,当你添加"_"
时,添加是在字符串和整数之间完成的 - 操作符只是将字符串附加到它。
答案 1 :(得分:1)
char
的int值是它在ASCII表中的位置。 '_'
位于第95位
答案 2 :(得分:1)
将整数添加到另一个数字类型时,最终会得到添加的结果,而不是连接。在这种情况下,char是一个数值,所以125 + 95(值为'_')与你的字符串连接,给你220_Something。
我会将字符串创建为string.Format(“{0} _ {1}”,id,“Something”),尤其是当您的最终字符串变得更复杂时。
答案 3 :(得分:0)
将int值替换为其ASCII值95。 使用字符串格式是最安全的方式:
Console.WriteLine("{0}_Something", id);