考虑一个场景,您正在实现旨在用于机器对机器通信的代码。典型的例子是在 Web API 操作方法中执行的代码。
假设您要在字符串之间执行完全匹配;也许您有一个用户列表,并且您希望找到一个提供用户名的特定用户:
List<User> users = ....
const string username = "user-123";
var user = users.Find(u => string.Equals(username, u.UserName));
在这种情况下,我应该使用StringComparison.Ordinal
orStringComparison.InvariantCulture
吗?
根据我的理解,由于我想在两个字符串之间执行完全匹配,所以这里的正确选择是StringComparison.Ordinal
.
两个字符串和之间的文化敏感比较的典型示例,其中两个字符串由于语言规则而被认为是相等的,似乎不适合这里。Straße
strasse
这个假设正确吗?
如果这是正确的,您能否提供一个示例,说明使用不变文化而不是序数比较是正确的选择?
只是为了澄清,我问是因为我正在开发一个代码库,其中有大量使用不变文化的字符串比较。其中许多情况是指在机器对机器通信场景中执行的精确字符串匹配。所以我想确保清楚地理解正确选择字符串比较值背后的基本原理。