小编Jar*_*Par的帖子

Distinct()保留始终采用列表中的第一个元素

int[] nums = { 2, 3, 3, 4, 2, 1, 6, 7, 10 };
var distinct = nums.Distinct();
Run Code Online (Sandbox Code Playgroud)

总是2, 3, 4, 1, 6, 7, 10按顺序返回?

c# linq

13
推荐指数
1
解决办法
2102
查看次数

在使用反射调用静态方法时,如何通过ref传递参数?

我正在使用反射在对象上调用静态方法:

MyType.GetMethod("MyMethod", BindingFlags.Static).Invoke(null, new object[] { Parameter1, Parameter2 });
Run Code Online (Sandbox Code Playgroud)

你如何通过ref传递参数,而不是按值传递?我假设它们默认是按值计算的.第一个参数(数组中的"Parameter1")应该是ref,但我无法弄清楚如何以这种方式传递它.

.net c# reflection

12
推荐指数
1
解决办法
6197
查看次数

我的代码应该如何"防御性"?

我和我的一位同事正在讨论你的代码应该是多么具有防御性.我都是职业防守编程,但你必须知道在哪里停止.我们正在开发一个由其他人维护的项目,但这并不意味着我们必须检查开发人员可以做的所有疯狂事情.当然,你可以这样做,但这会给你的代码增加很大的开销.

你怎么知道在哪里划线?

defensive-programming

12
推荐指数
4
解决办法
1412
查看次数

Enumerable.Sum()溢出

嘿,我正在使用Enumerable.Sum()LINQ 的扩展方法来计算哈希码,并且OverflowExceptions在代码变大时遇到问题.我尝试将电话放在一个unchecked区块中,但这似乎没有帮助.

该方法的MSDN文档说,如果值太大,它将抛出,但我检查了反射器,这就是:

public static int Sum(this IEnumerable<int> source) {
    if (source == null) {
        throw Error.ArgumentNull("source");
    }
    int num = 0;
    foreach (int num2 in source) {
        num += num2;
    }
    return num;
}
Run Code Online (Sandbox Code Playgroud)

根据这个反编译,我希望它可以溢出或不取决于调用代码的上下文.为什么它会溢出,我怎么能让它停止?

.net c# linq decompiling

12
推荐指数
2
解决办法
2307
查看次数

VS调试并观察变量的变量

我在一个类中的属性正在被某些东西改变.我更改此代码值的唯一地方是一行如下所示:

pushpin.Position.Altitude = -31;
Run Code Online (Sandbox Code Playgroud)

在visual studio调试期间,是否有一种方法可以观察.Atitude对所做的任何更改,最好是在更改值的赋值语句中中断.

如果这是追踪此问题的正确方法,我是否可以获得有关如何执行此操作的分步教程/说明?

谢谢.

c# debugging visual-studio

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

Debugger Visualizer生成Object Initializer代码

我们有一个需要修复的bug,就像任何优秀的TDD从业者一样,我想编写一个失败的测试来代表bug.该错误在一个方法中,它采用相当复杂的类型作为输入.只有当复杂类型具有特定的属性值组合时,该错误才会重现.

到目前为止,我已经重现了该错误,并且在调试器中,可以查看复杂类型的运行时值.现在我需要在单元测试的"排列"部分中创建该复杂类型,以便我可以将其提供给单元测试的"Act"部分中的buggy方法.

我可以手工编写一个大对象初始化代码块,如下所示:

var cats =
    new List<Cat>
        {
            new Cat {Name = "Sylvester", Age = 8},
            new Cat {Name = "Whiskers", Age = 2}
        };
Run Code Online (Sandbox Code Playgroud)

甚至是这样的:

var cats = new List<Cat>();
var cat1 = new Cat();
cat1.Name = "Sylvester";
cat1.Age = 8;
cats.Add(cat1);
var cat2 = new Cat();
cat2.Name = "Whiskers";
cat2.Age = 2;
cats.Add(cat2);
Run Code Online (Sandbox Code Playgroud)

没有什么花哨的.唯一的问题是"手工"部分 - 在我的情况下复杂类型并不像上面的例子那样微不足道.

我还可以在调试器中使用任何内置调试器可视化工具查看对象.所以我想我会编写一个自定义Debugger Visualizer,它将为我生成对象初始化代码.要使用它,我会在调试器中重现该问题,拉出QuickWatch窗口并选择我的自定义可视化工具.

另一种选择是编写一个自定义序列化实现,它将"序列化"到一个对象初始化代码块.使用它比仅仅拉动QuickWatch窗口要困难一些,但这可能有效.

在我自己解决这个问题之前,有没有人做过这样的事情?介意分享一个代码片段?或者有人会建议另一种方法吗?

PS在我的例子中,对象的类型是抽象基类的子类.只是想提一下.

c# debugging unit-testing debuggervisualizer visual-studio

12
推荐指数
2
解决办法
1668
查看次数

BlockingCollection <>中的元素顺序

我有一个下载队列实现BlockingCollection<>.现在我想暂时优先考虑一些下载.我认为将一些元素"向上"移动可能会很棒,就像在列表中一样,但是没有像Remove()/ AddFirst()或Move()这样的方法.

安排物品的首选方式是BlockingCollection<>什么?

.net queue collections concurrency multithreading

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

注册汇编时出错MSB3216

以下是错误详细信息:

在错误列表中:

错误1无法注册程序集"C:\ Users\cboardman\Documents\Visual Studio 2008\Projects\ExcelAddIn1\ExcelAddIn1\bin\Debug\ExcelAddIn1.dll" - 访问被拒绝.请确保您以管理员身份运行该应用程序.访问注册表项"HKEY_CLASSES_ROOT\ExcelAddIn1 ..."被拒绝.C:\ Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets 3019 9 ExcelAddIn1

在构建输出中:

目标UnmanagedRegistration:C:\ Windows\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3019,9):错误MSB3216:无法注册程序集"C:\ Users\cboardman\Documents\Visual Studio 2008\Projects\ExcelAddIn1\ExcelAddIn1\bin\Debug\ExcelAddIn1.dll" - 访问被拒绝.请确保您以管理员身份运行该应用程序.访问注册表项"HKEY_CLASSES_ROOT\ExcelAddIn1 ..."被拒绝.在项目"ExcelAddIn1.csproj"中完成构建目标"UnmanagedRegistration" - 失败.

根据我在网上找到的内容,我需要以管理员身份运行Visual Studio.对于小钉子来说,这似乎是一把大锤子.有没有办法解决这个问题(就像以管理员身份运行注册一样)?

com visual-studio-2008 visual-studio windows-7

11
推荐指数
2
解决办法
9032
查看次数

为什么VS2010调试器会挂起?

这刚开始发生在我的工作箱和家里.

在Visual Studio 2010中,我将启动一个调试会话,程序将运行到第一个断点,就是这样.

我可以按F10/11/5命中.什么都不会发生.唯一的出路是Shift + F5.

这让我疯了!

两台机器都是64位Windows 7.虽然,这就是相似之处的结束.

还有其他人遇到过这种情况吗?

debugging visual-studio-2010 visual-studio

11
推荐指数
1
解决办法
5319
查看次数

使用javascript将Image对象设置为div背景图像

我想从背景中加载4个图像,显示加载条到客户端
,当下载图像时,我想将它们设置为4个div块的背景图像.

我正在寻找这样的东西.

var myImages = new Array();
for(var i = 0; i < 4; i++)
    myImages[i] = new Image();
//load images using the src attribute
//and execute an on load event function where to do something like this.
var div0 = document.getElementById('theDivId');
div0.style.backgroundImage = myImage[index];
Run Code Online (Sandbox Code Playgroud)

有没有办法使用Image javascript对象设置背景图像?

javascript background-image loadimage

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