相关疑难解决方法(0)

如何在Visual Studio 2013中启用C#6.0功能?

我正在阅读C#6.0中介绍的最新功能,并且只是按照自动属性初始化程序的示例,

class NewSample
{
    public Guid Id { get; } = Guid.NewGuid();
}
Run Code Online (Sandbox Code Playgroud)

但我的IDE无法识别语法.

我想知道如何在Visual Studio 2013中启用C#6.0.我使用的Target框架是4.5.1.

c# visual-studio visual-studio-2013 c#-6.0

198
推荐指数
3
解决办法
12万
查看次数

字典或KeyedCollection?

我有一个类(SomeClass),其中包含一个属性Namestring类型.我需要存储该类的数组并按名称查找其项目.为此目的,有两种类型的集合:KeyedCollectionDictionary.我的问题是:它们之间有什么区别,在这种情况下最好使用KeyedCollectionDictionary?感谢您提供任何解释帮助.

.net c#

57
推荐指数
6
解决办法
2万
查看次数

Generic Key/Value pair collection in that preserves insertion order?

I'm looking for something like a Dictionary<K,V> however with a guarantee that it preserves insertion order. Since Dictionary is a hashtable, I do not think it does.

Is there a generic collection for this, or do I need to use one of the old .NET 1.1 collections?

.net c# data-structures

30
推荐指数
4
解决办法
3万
查看次数

为什么没有OrderedDictionary的通用实现?

为什么没有OrderedDictionary的通用实现?

在发布此消息之前,我确实看到: 没有OrderedDictionary的通用实现?

但这只是证实它不存在.不是为什么它不存在.

我见过一些自定义实现,包括:http: //www.codeproject.com/KB/recipes/GenericOrderedDictionary.aspx

但是为什么微软不把它包含在基础.net库中呢?当然他们有理由不建造通用......但它是什么?

谢谢

编辑:Perhpase应该转移到programmers.se.com ...但我不知道如何移动它.

.net c# ordereddictionary .net-3.5

6
推荐指数
0
解决办法
1332
查看次数

字典项目顺序

我用a Dictionary<string, Item>来存储自己的物品.
使用字典的原因是密钥是唯一的,访问速度很快.

在大多数情况下,我只使用dicionary来访问单个项目.但在一个案例中,我必须遍历字典 - 在这里我需要按顺序添加项目.

我只知道字典在内部使用哈希表,但我不知道它是如何组织的.

问题:
字典中的项目是否已添加?
添加或删除项目时,订单会发生什么变化?

c# dictionary

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

传递给 Invoke-Command 的属性将类型从 IDictionary 更改为 HashTable

Invoke-Command我在脚本块采用字典类型参数的地方运行时遇到错误:

无法处理参数“字典”的参数转换。无法将“System.Collections.Hashtable”类型的“System.Collections.Hashtable”值转换为“System.Collections.Generic.IDictionary`2[System.String,System.String]”类型。在行:7 字符:1 + Invoke-Command -ComputerName 。-ArgumentList $dictionary -ScriptBlock ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidData: (:) [], ParameterBindin...mationException + FullQualifiedErrorId : ParameterArgumentTransformationError + PS计算机名称:本地主机

经过大量挖掘后,我能够将脚本简化为下面的 MVP,以显示此问题的根源:

[System.Collections.Generic.IDictionary[string, string]]$dictionary = New-Object -TypeName 'System.Collections.Generic.Dictionary[string, string]' 
$dictionary.Add('one', 'hello')
$dictionary.Add('two', 'world')
Write-Verbose "Main Script $($dictionary.GetType().FullName)" -Verbose #outputs: VERBOSE: Before System.Collections.Generic.Dictionary`2[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]
Invoke-Command -ComputerName . -ArgumentList $dictionary -ScriptBlock {
    Param (
        #[System.Collections.Generic.IDictionary[string, string]] #if I leave this in I get a conversion error
        $dictionary
    ) …
Run Code Online (Sandbox Code Playgroud)

powershell dictionary hashtable psobject powershell-v5.1

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

.NET的字典中的元素是否顺序?

比如,如果我创建这样的字典:

Dictionary<string, MyClass> dic = new Dictionary<string, MyClass>();

dic.add("z1", val1);
dic.add("abc9", val2);
dic.add("abc8", val3);
dic.add("ABC1", val4);
Run Code Online (Sandbox Code Playgroud)

所以当我这样做时:

foreach (KeyValuePair<string, MyClass> kvp in dic)
{
}
Run Code Online (Sandbox Code Playgroud)

我保证将这些值检索为:"z1","abc9","abc8","ABC1"?

如果我第一次这样做,它会是:"z1","abc8","ABC1"?

dic.Remove("abc9");
Run Code Online (Sandbox Code Playgroud)

.net c# dictionary

5
推荐指数
2
解决办法
855
查看次数

是否有类型安全的有序字典替代?

我想在字典中保存一些对.

最后,我想将字典序列化为JSON对象.然后我打印JSON内容.我希望这些对的打印顺序与它们在字典中输入的顺序相同.

起初我用了一本普通的字典.但后来我觉得订单可能没有保留.然后我迁移到OrderedDictionary,但它不使用Generic,这意味着它不是类型安全的.

你有其他任何好的练习解决方案吗?

c# dictionary

4
推荐指数
2
解决办法
5133
查看次数

如何计算传递给Dictionary构造函数的capacity参数的最大值以避免OutOfMemoryException?

与此相关:

System.OutOfMemoryException因为大字典

OutOfMemoryException当我让.NET管理我的字典时,我得到了.调整大小方法抛出的异常.所以我试图通过提供大量的容量来避免调整大小.当然,我试图从int.MaxValue确保它将有助于解决问题开始.我计划尽可能多地下降.

然而OutOfMemoryException被扔了int.MaxValue.我决定进行一些二进制搜索,并将构造函数接受的容量的第一个值转换为int.MaxValue / 32.这不仅比我预期的要小,而且还令人困惑.

那么有谁有任何想法为什么?

哦,项目设置设置为使用x64架构.

.net c# dictionary out-of-memory

3
推荐指数
1
解决办法
305
查看次数

使用正确实现的比较器的SortedList <>/SortedDictionary <>可以用来保证插入顺序吗?

如果目标是创建一个保留插入顺序的通用只读字典,那么SortedList <,>或SortedDictionary <,>是否可以与IComparer <>一起使用,它试图通过执行类似下面的操作来维护插入顺序?

class OrderedComparer<T> : IComparer<M>
{
    public int Compare(M x, M y)
    {
        return x.Equals(y) ? 0 : -1;//or 1
    }
}
SortedList<M> orderedList = new SortedList<M>(new OrderedComparer<T>());
Run Code Online (Sandbox Code Playgroud)

(有趣的是,在SortedDictionary的情况下,上述方法需要返回0或1以防止元素按反向插入顺序排序).

c# dictionary hashtable sortedlist sorteddictionary

3
推荐指数
1
解决办法
199
查看次数

如何保持字典顺序?

我有一个Dictionary<string, Func<string, string>>.我使用键来提供下拉项,允许用户选择要运行的算法.然后我可以方便地将所选值反馈到字典中以获得相关功能.

// Initialization
my_dict["Function #1"] = func1;
my_dict["Function #2"] = func2;

...

// Executing
result = my_dict[user_choice](input);
Run Code Online (Sandbox Code Playgroud)

现在,当填充下拉列表时(a System.Windows.Forms.ComboBox)我循环使用这个键foreach.MSDN警告说,System.Collections.Generic.Dictionary不能保证有稳定的订单.但实际上我知道订单非常稳定,所以它现在有效.我确实希望为用户很好地订购这些功能.

但是,我想要正确地做到这一点 - 即.通过使用保证订单稳定性的数据结构.不幸的OrderedDictionary是没有用,因为它强迫值为objects; 我想让他们成为职能代表.与此同时,我不想添加太多不必要的复杂性(例如,我可以将密钥的副本存储为List<string>用于订单,但这似乎是一个糟糕的解决方案).

我能做什么?

注意:看起来有些人认为我希望我的项目按字母顺序排列.我不.我希望它们保持与我添加它们的顺序相同.也就是说,如果Function #2之前添加了密钥Function #1,它将按顺序出现在它之前.

c# dictionary

0
推荐指数
1
解决办法
1812
查看次数