先看一段代码:
string fileName_Apple1 = @"C:UsersAdministratorDesktop1.png";
string fileName_Apple2 = @"???C:UsersAdministratorDesktop1.png";
Image img1 = Image.FromFile(fileName_Apple1);
Image img2 = Image.FromFile(fileName_Apple2);
从表面看,fileName_Apple1 和fileName_Apple2 的值是相等的,然后奇怪的事情发生了,= Image.FromFile(fileName_Apple2);会报错,如下:
刚开始我也纳闷,然后调用了字符串对比,惊奇的发现fileName_Apple1和fileName_Apple2是不同的。

然后又改成了下述代码:将字符串的每个字符打印出来
string fileName_Apple1 = @"C:UsersAdministratorDesktop1.png";
string fileName_Apple2 = @"???C:UsersAdministratorDesktop1.png";
if (fileName_Apple1 == fileName_Apple2)
{
Console.WriteLine("相同");
}
else
{
Console.WriteLine("不同");
}
char[] char1 = fileName_Apple1.ToCharArray();
char1.ToList().ForEach(item=>Console.WriteLine (item));
Console.WriteLine("--------------------------");
char[] char2 = fileName_Apple2.ToCharArray();
char2.ToList().ForEach(item => Console.WriteLine(item));
Image img1 = Image.FromFile(fileName_Apple1);
Image img2 = Image.FromFile(fileName_Apple2);
输出:
C : U s e r s A d m i n i s t r a t o r D e s k t o p 1 . p n g -------------------------- ? ? ? C : U s e r s A d m i n i s t r a t o r D e s k t o p 1 . p n g
这就发现问题了,fileName_Apple2在C这个字符前居然还有三个字符,说明这个字符串有问题,然后将鼠标光标移动到这里,删掉了那三个字符问题就解决了,神奇的是,我们看不出来那里有字符,但是实际上他有多余的字符。