小编Jon*_*nny的帖子

List <IEnumerator> .All(e => e.MoveNext())不会移动我的枚举器

我正在尝试追踪代码中的错误.我把它煮成下面的片段.在下面的示例中,我有一个int网格(行列表),但我想找到具有1的列的索引.这个的实现是为每一行创建一个枚举器并逐步遍历每一列转而将调查员保持在一步.

class Program
{
    static void Main(string[] args)
    {
        var ints = new List<List<int>> {
            new List<int> {0, 0, 1},    // This row has a 1 at index 2
            new List<int> {0, 1, 0},    // This row has a 1 at index 1
            new List<int> {0, 0, 1}     // This row also has a 1 at index 2
        };
        var result = IndexesWhereThereIsOneInTheColumn(ints);

        Console.WriteLine(string.Join(", ", result)); // Expected: "1, 2"
        Console.ReadKey();
    }


    private static IEnumerable<int> IndexesWhereThereIsOneInTheColumn(
        IEnumerable<List<int>> myIntsGrid)
    {
        var …
Run Code Online (Sandbox Code Playgroud)

c# linq enumerator

17
推荐指数
2
解决办法
1777
查看次数

在内存快照中的根路径中查找非[循环检测到]叶子

在VS2015中,有一个有用的工具可用于查找对象的引用.然而,在我正在努力扩展这个树的意大利面条代码中有许多以[检测到周期]结束的叶子(例如A有对B的引用而B有对A的引用).例如:

检测到大量循环的树

有没有办法过滤出仅包含循环叶子的分支?或者在这里导出数据的方法?

profiler memory-leaks visual-studio-2015

9
推荐指数
0
解决办法
2129
查看次数

Visual Studio 2012 - 当地人已经消失了

在调试VS2012时,我发现我无法再访问变量值:

  • "本地"窗口未显示任何内容(如下图所示).
  • Watch窗口告诉我"无法评估任何表达式的表达式"(如下图所示).我个人最喜欢的是它无法评估true.
  • 并且鼠标悬停在任何变量上都不会显示任何值工具提示.

图像显示没有当地人

我尝试过的:

重新启动Visual Studio

重新启动我的电脑

检查已加载的模块是否显示调试符号

卸载我昨天安装的TeamCity插件

在工具/选项/调试下查看任何明显的事情(并禁用其他已经正常工作的扩展)

编辑:我也尝试过创建一个新的解决方案.

我还注意到调用堆栈显示了几个空白行,我认为应该有外部方法名称(如上图所示) - 我不确定这是否相关,但值得一提.

debugging visual-studio-2012

8
推荐指数
2
解决办法
7813
查看次数

在mef中卸载dll文件

我有一些插件作为DLL文件.我的应用程序加载DLL并运行正常.但是当我尝试删除旧插件并用新插件替换它时,它不允许我这样做.因为它已被应用程序加载.我发现通过使用appdomain,我们可以做到这一点.但我无法找到使用mef的解决方案.

我需要一个可以在mef上运行的代码.下面是我的代码,用于加载插件.

//Creating an instance of aggregate catalog. It aggregates other catalogs
var aggregateCatalog = new AggregateCatalog();

//Build the directory path where the parts will be available
var directoryPath = "Path to plugins folder";

//Load parts from the available dlls in the specified path using the directory catalog
var directoryCatalog = new DirectoryCatalog(directoryPath, "*.dll");

//Add to the aggregate catalog
aggregateCatalog.Catalogs.Add(directoryCatalog);

//Crete the composition container
var container = new CompositionContainer(aggregateCatalog);


// Composable parts are created here i.e. the Import and Export …
Run Code Online (Sandbox Code Playgroud)

c# dll mef

7
推荐指数
1
解决办法
3965
查看次数

Resharper重新格式化String.Format()参数

我经常发现自己写的东西像:

String.Format("{1}: {0}", reason, message);
Run Code Online (Sandbox Code Playgroud)

或类似的东西,但有更多的字符串占位符.

Resharper中是否有自动重构来更改占位符和参数的顺序?如果我试图手动更改顺序,我倾向于搞乱映射.

显然,上面的例子是微不足道的.我在现实中所做的经常是写下:

String.Format("{0}.{2} = {1}.{3} AND {0}.{4} = {1}.{5} AND {6}.{7} = {1}.{8}",
  table1Alias, table2Alias, col1A, col2A, col1B, col2B, table3Alias, col3C, col2C);
Run Code Online (Sandbox Code Playgroud)

并且想到如果我能将table3Alias移到其他别名旁边的前面那会很棒.

(Resharper 7.1.3)

c# resharper

7
推荐指数
1
解决办法
1304
查看次数

集成测试,单元测试和代码覆盖

我正在为一位同事审查一些代码,并在单元测试类中遇到了一个测试,看起来如下:

// setup
Foo f = ...
FooToBarConverter ftb = ...
Bar b = ftb.Convert(f); // It is easier to create a Bar by converting it from a Foo than making one 'from scratch'

// test
systemUnderTest.DoSomething(bar);

// assert
Assert.IsTrue(...)
Run Code Online (Sandbox Code Playgroud)

很明显,这是一个集成测试,因为它正在测试FooToBarConverter以及被测系统,因为它是唯一涵盖DoSomething()方法的测试.我建议将此测试移至集成测试解决方案,但这会降低单元测试的代码覆盖率.我们的目标是100%的单元测试代码覆盖率(是的 - 我知道100%的覆盖率是达到目的的手段而非终端本身,100%覆盖的代码不一定是100%正确的代码).

如果我们将集成测试移出去,是否有理由创建单元测试以恢复覆盖范围?

或者我们是否针对100%单元测试覆盖率的错误做法?我们是否应该通过组合所有测试(甚至100%的目标)来实现100%的覆盖率?

谢谢.

编辑/ UPDATE:

这不是关于如何正确地测试被测系统的问题(我知道这不是单元测试的原因,我知道如何正确地将其转换为单元测试),也不是关于覆盖范围的问题FooToBarConverter.我希望对被测系统的代码覆盖率有所了解:对被测系统的集成测试是否足够?还是应该进行单元测试?

integration-testing unit-testing

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

C#:避免if(x为Foo){...} else if(x is Bar){...}用于数据结构

我有一系列数据结构,如:

abstract class Base {...}
class Foo : Base {...}
class Bar : Base {...}
Run Code Online (Sandbox Code Playgroud)

以及一个接受Base并根据它所依赖的子类转换它的方法:

void Convert(Base b) {
  if (b is Foo) 
    // Do the Foo conversion
  else if (b is Bar) 
    // Do the Bar conversion
...
Run Code Online (Sandbox Code Playgroud)

显然这是一个可怕的面向对象 - 转换方法必须知道Base的每个派生类,并且必须在每次扩展Base时进行更改.解决这个问题的'正常'OO方法是使每个派生类的Base负责转换自身,例如

abstract class Base {
  abstract Converted Convert();
...}
class Foo : Base {
  override Converted Convert(){...}
...}
class Bar : Base {
  override Converted Convert(){...}
...}
Run Code Online (Sandbox Code Playgroud)

但是,在我编写的代码中,Base是一个纯数据结构(只有getter和setter - 没有逻辑),而且它在另一个我无权更改的程序集中.有没有一种方法可以更好地构造代码,而不强制Base的派生类具有逻辑?

谢谢

c# data-structures

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

Visual Studio 2012 - "错误访问被拒绝"消息框 - 没有其他信息

我在使用Visual Studio 2012时偶尔会出现错误.错误(如下所示)几乎没有任何关于出错的信息.似乎错误与源控制有某种关系,因为我通常在更改文件(并且文件被自动检出)或添加新内容时收到错误.

除了错误消息之外,似乎没有任何错误 - 源代码控制为我检出文件,我可以写入签出文件.

我已经检查了输出窗口,没有任何明显的东西可以显示出错的地方.我能做些什么来更好地了解出了什么问题?或者有其他人有同样的问题,知道如何解决它?

错误信息

VS关于盒子信息:

Microsoft Visual Studio Premium 2012版本11.0.61030.00更新4 Microsoft .NET Framework版本4.5.50709

已安装版本:Premium

适用于Visual Studio 2012的LightSwitch 04941-004-0043007-02952适用于Visual Studio 2012的Microsoft LightSwitch

Office开发人员工具04941-004-0043007-02952 Microsoft Office开发人员工具

适用于Visual Studio 2012的团队资源管理器04941-004-0043007-02952适用于Visual Studio 2012的Microsoft团队资源管理器

Visual Basic 2012 04941-004-0043007-02952 Microsoft Visual Basic 2012

Visual C#2012 04941-004-0043007-02952 Microsoft Visual C#2012

Visual C++ 2012 04941-004-0043007-02952 Microsoft Visual C++ 2012

Visual F#2012 04941-004-0043007-02952 Microsoft Visual F#2012

Visual Studio 2012代码分析拼写检查程序04941-004-0043007-02952Microsoft®VisualStudio®2012代码分析拼写检查程序

部分国际CorrectSpell™拼写纠正系统©1993 Lernout&Hauspie Speech Products NV保留所有权利.

美国遗产®英语词典,第三版版权所有©1992 Houghton Mifflin Company.电子版由Lernout&Hauspie Speech Products NV授权.保留所有权利.

Visual Studio 2012 SharePoint开发人员工具04941-004-0043007-02952 Microsoft …

visual-studio-2012

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

当"虚拟"是可选的时,C#中"密封"的目的是什么?

如果一个类没有任何虚方法,我认为继承类的任何方式都不会影响任何未明确引用该实例作为子类实例的代码,即

Subclass obj = new Subclass()
Run Code Online (Sandbox Code Playgroud)

而不是

BaseClass obj = new SubClass()
Run Code Online (Sandbox Code Playgroud)

因此,为什么sealed甚至存在?

如果你没有声明任何东西virtual(我认为在密封类中没有任何意义),它会阻止像(例如)a ListViewItem那样存储一些关于它代表什么的额外信息的代码"知道"该信息是在那里,与重写的方法不同,它对没有用该子类编写的代码没有影响.

c# oop inheritance class sealed

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

OVER子句中的SQL ORDER BY与CLR聚合不兼容?

序言 我一直在调查一个概念,我在下面发布的内容是我一直在努力的简化版本.如果你看一下并且想"这样做没有任何意义"那么可能是因为我没有任何意义 - 可能有更有效的方法来做到这一点.我只想尝试一下,因为它看起来很有趣.

我正在尝试使用反向波兰式实现在SQL中使用CLR自定义聚合来计算任意计算.我正在使用这些数据:

K | Amt | Instruction | Order
--+-----+-------------+------
A | 100 |        Push |     1
A |   1 |    Multiply |     2
A |  10 |        Push |     3
A |   2 |    Multiply |     4
A |     |         Add |     5
A |   1 |        Push |     6
A |   3 |    Multiply |     7
A |     |         Add |     8
Run Code Online (Sandbox Code Playgroud)

计算结果应该是123 ( = (100 * 1) + (10 * 2) + (1 …

c# sql sqlclr

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