相关疑难解决方法(0)

为什么词典"没有订购"?

我已经在这里回答了许多问题.但究竟是什么意思呢?

var test = new Dictionary<int, string>();
test.Add(0, "zero");
test.Add(1, "one");
test.Add(2, "two");
test.Add(3, "three");

Assert(test.ElementAt(2).Value == "two");
Run Code Online (Sandbox Code Playgroud)

上面的代码似乎按预期工作.那么字典被认为是无序的?在什么情况下上面的代码会失败?

.net c# dictionary operator-precedence base-class-library

45
推荐指数
4
解决办法
9948
查看次数

.NET默认属性错误

我有一个VB.NET项目,我可以使用索引迭代键和值字典对象的集合:


MyDictionary.Keys(idx)
MyDictionary.Values(idx)
Run Code Online (Sandbox Code Playgroud)

当此代码从测试项目中获取并放入实际项目时,我收到以下错误:

'System.Collections.Generic.Dictionary(Of Double,String).KeyCollection'无法编入索引,因为它没有默认属性.

'System.Collections.Generic.Dictionary(Of Double,String).ValueCollection'无法编入索引,因为它没有默认属性.

这是使用VB.NET和VS 2008.我不知道从一个项目到下一个会导致此错误的项目有什么区别.测试是一个控制台应用程序,该程序是一个winforms应用程序.

什么条件会导致这些集合的默认属性发生变化?

编辑 - 感谢所有答案,告诉我如何循环字典.然而,这些答案并没有回答我为什么可以在一个项目中使用索引而不在另一个项目中使用索引的问题.我是否应该无法将代码从一个.net项目复制并粘贴到另一个.net项目并使其工作相同?并且,不,选项严格,不是问题的原因.

编辑 - 尝试重现我所看到的内容:

  • 使用VS 2008创建新的VB.NET控制台应用程序
  • 将以下代码复制并粘贴到模块中:

Imports System.Collections
Imports System.Collections.Generic

Module Module1

    Public dtf As Dictionary(Of Double, String)

    Public Sub BuildDictionary()

        dtf = New Dictionary(Of Double, String)

        dtf.Add(1.0, "1")
        dtf.Add(0.0, "0")

    End Sub

    Public Sub Search()
        For idx As Integer = 0 To dtf.Keys.Count - 1
            If dtf.Keys(idx) = 0 Then
                Exit Sub
            End If
        Next
    End Sub

    Sub Main()

    End Sub

End …
Run Code Online (Sandbox Code Playgroud)

vb.net default properties

6
推荐指数
1
解决办法
5337
查看次数

SortedDictionary中的第一项?

关于从a获得"第一"项目的方法有很多很多线索Dictionary,以及为什么这样的事情不是一个好主意的各种答案,因为没有内部排序.但我的是a SortedDictionary,所以这些论点不适用.然而,我无法找到一种方法来获得Nth项目,而SortedDictionary不是一个Dictionary.

这是我的SD:

FRs As SortedDictionary(Of DateTime, ScheduleItem)
Run Code Online (Sandbox Code Playgroud)

我看到了一些我应该能做的提示:

If FRs.Count = 1 Then
    FirstFR = FRs.Keys(0)
Run Code Online (Sandbox Code Playgroud)

但这在我的代码中无效 - 它表示它没有默认值,也无法编入索引..FirstLINQ中似乎都有其他选项,我无法定位.那么以这种方式访问​​它有什么简单的方法吗?

注意:提供的任何解决方案都不能使用LINQ,这在许多非Wintel平台上都不存在.

vb.net sorteddictionary

2
推荐指数
1
解决办法
675
查看次数