documentation表示它"表示您在路由框架中的各个位置使用的不区分大小写的键/值对集合,例如您定义时路由的默认值,或者当您生成基于路由的URL时。"
从我所看到的,它使用普通的CreateNewWeapon
在内部存储它的密钥,因此它实际上区分大小写。我发现这个类的任何方面都不区分大小写,文档错误了吗?
答案 0 :(得分:1)
您使用Dictionary<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