- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最初有一些代码,简化后看起来像这样:
var planets = new List<Planet>
{
new Planet {Id = 1, Name = "Mercury"},
new Planet {Id = 2, Name = "Venus"},
};
我遇到了一个场景,列表被同时填充,但读取速度不够快。因此,我将其更改为使用 SortedList。
后来我意识到我可以这样重写
var planets = new SortedList<int, Planet>
{
{1, new Planet {Id = 1, Name = "Mercury"}},
{2, new Planet {Id = 2, Name = "Venus"}},
//in my actual code, i am reading the ids from a db
};
但在我采用这种方法之前,我的代码是这样写的
var planets = new SortedList<int, Planet>
{
Keys = {1, 2},
Values =
{
new Planet {Id = 1, Name = "Mercury"},
new Planet {Id = 2, Name = "Venus"},
}
};
这给了我这个异常(exception)
System.NotSupportedException: This operation is not supported on SortedList
nested types because they require modifying the original SortedList.
at System.ThrowHelper.ThrowNotSupportedException(ExceptionResource resource)
at System.Collections.Generic.SortedList`2.KeyList.Add(TKey key)
我发现这很奇怪,因为恕我直言,我并没有像它声称的那样真正修改“原始 SortedList”,它在谈论什么“嵌套类型”?它是 SortedList
内部的 key 列表吗? ?
然后我看到 Keys
和 Values
SortedList
中的属性实际上没有二传手。它们是只读属性,但我没有收到编译时错误。我可以进行 set 调用,正如我在堆栈跟踪中看到的 KeyList.Add
.我觉得失败的唯一原因是因为 SortedList
中的显式检查,这对我来说似乎很奇怪!
例如 var str = new String {Length = 0};
正如预期的那样给我一个编译时错误,因为 Length 是一个只读属性,planets.Keys = null;
也是如此。
有人请告诉我 - 我在这里忽略了什么简单的事实?
最佳答案
您编写的代码与此类似:
var planets = new SortedList<int, Planet>();
planets.Keys.Add(1);
planets.Keys.Add(2);
planets.Values.Add(new Planet { Id = 1, Name = "Mercury" });
planets.Values.Add(new Planet { Id = 2, Name = "Venus" });
SortedList
要求您通过 SortedList<TKey, TValue>.Add(TKey key, TValue value)
同时添加值和键方法,以便它可以按键对值进行排序。 IList<T>
的实现用于 Keys
和 Values
内部不支持通过 IList<T>.Add(T value)
独立添加相应的键或值方法。
您应该能够通过调用 Keys.Add(...)
来重现此错误或 Values.Add(...)
关于c# - SortedList<> 及其奇怪的 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28036242/
由于我使用的现有框架,方法调用返回一个 SortedList 对象。因为我写了这个调用的另一端,所以我知道它实际上是一个 SortedList。虽然我可以继续使用 SortedList,但使用泛型会更
我在 RecyclerView 中遇到 Android SortedList 的问题,主要是 remove 方法: public void replaceAll(List userFertList,
我想比较在 SortedList 中用作键的字节数组 public SortedList myList = new SortedList(); 问题是,我无法将条目添加到 myList 中,因为 .N
我想总结 SortedList 的某些值(时间范围从开始到结束)与林克。键包含工作日的日期,值包含给定日期可能的工作时间。我想回答的问题是,在给定的时间范围内有多少小时是可能的。 我设法计算了 key
可以SortedList取两个键并返回一个值? 我有 SortedList 类型的标准 但现在我需要传递两个键来找到值 SortedList . 这可能吗?如果没有,请告诉我其他一些解决方案,我构建了
我有降序排列的 SortedList。 public class MyComparer : IComparer { public int Compare(int x, int
我正在尝试将 SortedList 与不区分大小写的字符串比较结合使用。以下是工作: SortedList mySL = new SortedList(new CaseInsensitiveCompa
我正在开发一种算法,该算法在很大程度上依赖于某些列表中元素的顺序,但是,该列表需要允许重复和随机访问其元素(不使用迭代器)。我在java中搜索过这样的东西,但找到的选项总是缺少我提到的条件之一。 任何
其中一位使用我编写的协议(protocol)生成工具的人报告了一个我无法真正理解的错误: Failed to compare two elements in the array. 我使用 Sorted
看起来 SortedList 已被排除。您认为现有集合中最合适的是什么? (保持同样快速的访问和更改) silverlight字典可以永久排序吗? 最诚挚的问候VLK 最佳答案 我将 Wintelle
我最初有一些代码,简化后看起来像这样: var planets = new List { new Planet {Id = 1, Name = "Mercury"}, new Plan
不使用扩展方法 (LINQ)。不幸的是,我仅限于 .NET 2.0。 (是的,这很糟糕) 寻找接近 O(log(n)) 的东西。 感谢您的帮助。 最佳答案 要查找大于给定键的第一个键,您可以使用键列表
我的问题是枚举器从 SortedList 中删除项目是否安全? SortedList myDictionary; // omitted code IEnumerator enum = myDictio
我正在向排序列表中添加一些独特的法语单词,但它似乎无法区分某些单词,例如“bœuf”和 boeuf。 private static void TestSortedList() { Thread
有没有办法将 android.support.v7.util.SortedList 转换为 java.util.List? (或任何其他子类)我看到的唯一方法是遍历 SortedList 并将元素一个
我有这个对象: class Animation { //[...] private SortedList frames = new SortedList();
我在理解 RecyclerView 的 SortedList 时遇到一些问题。 假设我有一个非常简单的类,只有一个非常简单的类保存数据: public class Pojo { public
下面的代码遍历一个列表并获取值,但是我如何编写一个类似的语句来获取键和值 foreach (string value in list.Values) { Console.WriteLine(v
任何人都可以解释为什么这段代码: Dim Data As New SortedList(StringComparer.InvariantCultureIgnoreCase) Data.Add("AB"
有一个SortedList slLanguage = new SortedList(); slLanguage.Add("Bahasa","id-ID"); slLanguage.Add("Chine
我是一名优秀的程序员,十分优秀!