对于Equals,我应该
hostname.Equals(theHostName,StringComparision.OrdinalIgnoreCase) 要么 hostname.Equals(theHostName,StringComparision.InvariantCultureIgnoreCase) ?
In' IsAllowedHostName'我应该做什么
hostname.IndexOf(badSubstring,StringComparison.OrdinalIgnoreCase)> = 0 要么 hostname.IndexOf(badSubstring,StringComparison.InvariantCultureIgnoreCase)> = 0 ?
或者对于主机名,这些都不是正确答案吗?
答案 0 :(得分:2)
您应该阅读定义DNS系统的RFC。 DNS主机标签不区分大小写,可能只包含字母A-Z,0-9和' - '。 DNS名称由一个或多个与ASCII连接的标签组成。' (期间,句号)。
使用StringComparision.OrdinalIgnoreCase
。
答案 1 :(得分:0)
在您的情况下,您可以确定使用 OrdinalIgnoreCase 或 InvariantCultureIgnoreCase 之间没有功能差异。
但从语义上讲,您对进行任何基于自然语言的比较不感兴趣,因此 OrdinalIgnoreCase 会更合乎逻辑。作为副作用,它也比InvariantCultureIgnoreCase更快。