比较c#中的两个相等表达式返回false

时间:2014-07-08 10:56:35

标签: c# arrays compare

任何人都可以解释为什么这总是会返回" false"? myList包含" .txt",扩展名为" .txt"。

Array.Exists(myList, element => element == Path.GetExtension(myName).ToLower())

我甚至尝试过这样的事情:

String.Compare(myList[10],".txt")

我仍然得到"假" (1)。
当我检查myList[10]的值时,它包含" .txt"

修改
我可以稍微缩小问题的范围 myList来自xml:

                myXml= new XDocument();
                myXml= XDocument.Load(myXmlFilePath);

            myList= myXml.Root.Elements("File")
                   .Select(element => element.Value)
                   .ToArray();

如果我更换
 myXml= XDocument.Load(myXmlFilePath);
 与
 myXml= XDocument.Parse("<Files><File>.txt</File><File>.ppt</File></Files>");
 比它运作良好

这是xml文件:

<?xml version="1.0" encoding="utf-8"?>
<Files>
    <File>.txt </File>
    <File>.ppt </File>
    <File>.xls </File>
</Files>

1 个答案:

答案 0 :(得分:0)

Array.Exists确定指定的数组是否包含与指定谓词定义的条件匹配的元素 我认为你的谓词element => element == Path.GetExtension(myName).ToLower()是假的 String.Compare假设您的myList[10]为char数组为there's no overload to pass actual array to this method

我的猜测是你的前提是错误的,myName不是文本文件的路径,而myList[10]是char数组而不是字符串数组。