该文档指出它“表示您在路由框架中的各个位置使用的不区分大小写的键/值对集合,例如当您定义路由的默认值或生成基于路线。”
据我所知,它使用法线Dictionary<string,object>
在内部存储它的密钥,所以它实际上是区分大小写的。我找不到此类不区分大小写的任何方面,所以文档是错误的吗?
该文档指出它“表示您在路由框架中的各个位置使用的不区分大小写的键/值对集合,例如当您定义路由的默认值或生成基于路线。”
据我所知,它使用法线Dictionary<string,object>
在内部存储它的密钥,所以它实际上是区分大小写的。我找不到此类不区分大小写的任何方面,所以文档是错误的吗?
您关于 usingDictionary<string, object>
使比较区分大小写的说法是不正确的。Dictionary<TKey, TValue>
允许将自定义IEqualityComparer<TKey>
实现提供给构造函数。RouteValueDictionary
正是这样做并传递StringComparer.OrdinalIgnoreCase
给Dictionary<string, object>
构造函数:
public class RouteValueDictionary : IDictionary<string, object> {
private Dictionary<string, object> _dictionary;
public RouteValueDictionary() {
_dictionary = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
}
public RouteValueDictionary(object values) {
_dictionary = new Dictionary<string, object>(StringComparer.OrdinalIgnoreCase);
AddValues(values);
}
public RouteValueDictionary(IDictionary<string, object> dictionary) {
_dictionary = new Dictionary<string, object>(dictionary, StringComparer.OrdinalIgnoreCase);
}
所以回答这个问题:RouteValueDictionary
不区分大小写。
请参阅 sourceof.net 上的代码:https ://referencesource.microsoft.com/#System.Web/Routing/RouteValueDictionary.cs,551a423c96bb6648