小编New*_*ark的帖子

使用Dictionary <Foo,Foo>而不是List <Foo>来加速调用包含()

我对C#中的泛型集合有疑问.如果我需要存储一组项目,并且我经常需要检查项目是否在集合中,那么使用Dictionary而不是List会更快吗?

我听说检查一个项目是否在集合中是相对于列表大小是线性的还是相对于字典大小的常量.是否正在使用Dictionary,然后将Key和Value设置为每个键值对的同一对象,这是其他程序员在这种情况下经常做的事情?

感谢您抽时间阅读.

c# collections dictionary list

7
推荐指数
3
解决办法
473
查看次数

使用Visual Studio进行调试时保持辅助线程运行

我正在制作一个应用程序,它会向Visual Studio发送一步一步的按键,使其能够截取部分自己的代码逐行执行的截图.

但是当你在你的代码中遇到一个断点时,似乎所有线程都会停止,即使是那些没有达到断点的线程.有没有办法解决?当我遇到断点时,有没有办法让Visual Studio保持其他线程运行?或者我是否必须采取单独的流程?

编辑:澄清一下,当断点被击中时,我需要在遇到断点的线程上执行停止.我希望断点仅在被某个线程命中时激活.换句话说,我需要让一部分程序继续执行,同时一个线程在调试器的断点处停止.

c# multithreading breakpoints visual-studio visual-studio-2012

5
推荐指数
1
解决办法
1040
查看次数

基础构造函数调用中的Lambdas

好的,我有以下基类:

public partial class InputValidator<T> : UserControl {
    public InputValidator(TryParse<T> parserMethod, T initialValue) { }
    public T Value { get; set; }
    public bool IsInputValid { get; }
    public override string Text { get; set; }
    public string InputInvalidMessage { get; set; }
    public TryParse<T> Parser { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

where TryParse<T>是一个委托,它表示类似于TryParse内置类型的所有方法的方法. public delegate bool TryParse<T>(string input, out T result);

上面的类是一个文本输入控件,它尝试使用指定的解析方法解析用户输入,当它无法解析输入时,它会在文本框下方显示一条消息,指示用户的输入无效.

我现在有以下来自这个类:

public class StructInputValidator<T> : InputValidator<T?> where T : struct
{
    public StructInputValidator(TryParse<T> parser, T? …
Run Code Online (Sandbox Code Playgroud)

c# user-controls

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

递归代码很难理解 - 需要简化

我有一个实体,我可以拥有InvoiceLine,然后您可以无限次地信用该发票行.但只有主InvoiceLine才能引用原始实体.

我使用递归来获取原始实体,但代码不是那么可读

private static PermanentPlacement PopulatePermanentPlacement(InvoiceLine invoiceLine)
        {
            PermanentPlacement permanentPlacement;
            var creditReissue = invoiceLine.CreditReissue;
            do
            {
                permanentPlacement = creditReissue.InvoiceLine.PermanentPlacement;
                if (permanentPlacement == null)
                {
                    creditReissue = creditReissue.InvoiceLine.CreditReissue;
                }
            } while(permanentPlacement == null);

            return permanentPlacement;
        }
Run Code Online (Sandbox Code Playgroud)

有什么方法可以让我更可读和简化?

c# recursion

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