当前位置: 首页 > 知识库问答 >
问题:

为什么是String。IsBOMWhitespace()方法总是返回false?

姬捷
2023-03-14

在.NET Framework 4.5中,由Trim()方法调用的专用TrimHelper()方法使用以下条件来确定是否需要修剪字符:(由.NET Reflector反编译的代码)

if (!char.IsWhiteSpace(this[start]) && !IsBOMWhitespace(this[start]))

我想知道为什么IsBOMWhitesspace方法总是返回false??

private static bool IsBOMWhitespace(char c)
{
    return false;
}

这是微软计划在未来改变/扩展的吗?例如,通过检查char是否为‘u efff’并在这种情况下返回true?

共有2个答案

田德馨
2023-03-14

如果您检查原始代码源:

    private static bool IsBOMWhitespace(char c)
    {
#if FEATURE_LEGACYNETCF
        if (CompatibilitySwitches.IsAppEarlierThanWindowsPhone8 && c == '\xFEFF')
        {
            // Dev11 450846 quirk:
            // NetCF treats the BOM as a whitespace character when performing trim operations.
            return true;
        }
        else
#endif
        {
            return false;
        }
    }

这只是为 .NET Compact Framework 启用的兼容性功能。

司空高义
2023-03-14

来源:http://referencesource.microsoft.com/#mscorlib/system/string.cs,bbf058af7f3f71df

private static bool IsBOMWhitespace(char c)
{
     #if FEATURE_LEGACYNETCF
     if (CompatibilitySwitches.IsAppEarlierThanWindowsPhone8 && c == '\xFEFF')
     {
         // Dev11 450846 quirk:
         // NetCF treats the BOM as a whitespace character when performing trim operations.
         return true;
     }
     else
     #endif
     {
         return false;
     }
}

如果兼容性测试#If FEATURE_LEGASYNETCF返回true,则可能会得到不同的结果。

 类似资料:
  • 问题内容: 我找到了JavaDoc的方法: 返回:如果此线程已被中断,则返回true;否则返回false。 否则为假。 我对这种方法的理解有误。此外,我可能会误解Thread中的“中断”概念。 欢迎任何解释!谢谢! 程式码片段: 在线程定义中: 调用: 问题答案: 引发异常后,线程不再处于中断状态。

  • 问题内容: 我有以下代码。应该返回表的最后一行的mysqli_insert_id()(在本例中为“ $ last_row”)始终返回0。为什么会这样呢? 问题答案: 并 没有 返回表的最后一排的ID。从文档中,它: …返回由查询产生的ID,该查询是对具有具有AUTO_INCREMENT属性的列的表进行的。如果最后一个查询不是or 语句,或者如果修改后的表没有带有属性的列,则此函数 将返回零 。 (

  • 问题内容: 我一直在获取要使用mysqli返回的行数方面遇到麻烦。即使确实有一些结果,我每次都会得到0。 为什么没有显示正确的数字? 问题答案: 您需要先调用num_rows查找: 请参阅文档,该文档显示在页面顶部附近(在主要说明区域中)…

  • 初学者问题,很抱歉,如果这不是一个合适的地方,请尝试学习在中逻辑是如何工作的,我无法理解这一点 我希望它会说“是的!”如果是A、A、D或D,而是z,但出于某种原因,它会说“是的!”无论第一个符号是什么,都会断开,并且只检查第二个符号是否为z。

  • 问题内容: 据我所知,使用或实例化对象分别返回或的新实例。具有 新标识 的新实例对象。 在我实际测试它之前,这对我来说是很清楚的,我注意到它实际上返回了而不是预期的: 如预期的那样,分别使用和创建对象时,也会表现出这种行为: 我可以在状态文档中找到唯一相关的信息: […]例如,return和return 。 如果未提供任何参数,则构造函数将创建一个新的空元组。 可以说,这不足以回答我的问题。 那么

  • 我正在尝试使用equals方法与对象进行比较,但它总是返回false