documentation指出它「代表不區分大小寫您在路由框架的各個位置使用的鍵/值對的集合,例如,當您爲路由定義默認值或生成URL時基於路線。「RouteValueDictionary類的鍵是否區分大小寫?
從我所看到的,它使用正常的Dictionary<string,object>
在內部存儲它的密鑰,所以它實際上區分大小寫。我找不到這個類不區分大小寫的任何方面,那麼這個文檔就錯了?
documentation指出它「代表不區分大小寫您在路由框架的各個位置使用的鍵/值對的集合,例如,當您爲路由定義默認值或生成URL時基於路線。「RouteValueDictionary類的鍵是否區分大小寫?
從我所看到的,它使用正常的Dictionary<string,object>
在內部存儲它的密鑰,所以它實際上區分大小寫。我找不到這個類不區分大小寫的任何方面,那麼這個文檔就錯了?
您聲明使用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