小编Jay*_*uzi的帖子

如何使用`using`语句对方法进行单元测试?

如何为具有using语句的方法编写单元测试?

例如,假设我有一个方法Foo.

public bool Foo()
{
    using (IMyDisposableClass client = new MyDisposableClass())
    {
        return client.SomeOtherMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能测试上面的代码?

有时我选择不手动使用using语句和Dispose()对象.我希望有人会告诉我一个我可以使用的技巧.

c# unit-testing idisposable legacy-code

17
推荐指数
3
解决办法
6486
查看次数

我应该返回'null'还是空数组?

假设您有一个方法应该创建并返回某种类型的数组.如果数组没有填充,该怎么办?你返回一个空数组还是null/nothing?

.net coding-style

16
推荐指数
2
解决办法
4165
查看次数

在文件中查找唯一字符

我有一个包含450,000多行条目的文件.每个条目的长度约为7个字符.我想知道的是这个文件的独特字符.

例如,如果我的文件如下;

Entry
-----
Yabba
Dabba
Doo
Run Code Online (Sandbox Code Playgroud)

那么结果就是

独特人物:{abdoy}

注意我不关心案例,也不需要订购结果.有些东西告诉我这对Linux人来说很容易解决.

更新

我正在寻找一个非常快速的解决方案.我真的不想创建代码来遍历每个条目,遍历每个字符......等等.我正在寻找一个很好的脚本解决方案.

更新2

通过快速的,我的意思是快速实现......不一定运行速度快.

scripting search parsing

16
推荐指数
6
解决办法
8997
查看次数

在C#中编写[0..100]的最佳方法是什么?

我正在尝试用巧妙,清晰和简单的方法来编写描述给定范围内整数序列的代码.

这是一个例子:

IEnumerable<int> EnumerateIntegerRange(int from, int to)
{
    for (int i = from; i <= to; i++)
    {
        yield return i;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# linq optimization sequences

15
推荐指数
2
解决办法
3201
查看次数

硬编码文字是否可以接受?

我目前正在处理的代码库中充斥着硬编码值.

我将所有硬编码值视为代码气味,并尝试在可能的情况下消除它们......但是有些情况我不确定.

以下是我能想到的两个例子让我想知道最佳做法是什么:

1. MyTextBox.Text = someCondition ? "Yes" : "No"
2. double myPercentage = myValue / 100;
Run Code Online (Sandbox Code Playgroud)

在第一种情况下,最好的做法是创建一个允许我在配置文件中执行MyHelper.Yes和MyHelper.No或者类似的东西的类(虽然它不太可能改变,谁知道是否有可能曾经是一个案例,其用法将区分大小写).

在第二种情况下,除非数学定律改变,否则找不到百分比的百分比不可能改变......但我仍然想知道是否有更好的方法.

任何人都可以建议一种适当的方式来处理这种硬编码吗?任何人都可以想到硬编码是可接受的做法吗?

language-agnostic hard-coding

15
推荐指数
6
解决办法
3729
查看次数

如何将C#代码组织到文件中?

在C#中,关于要创建什么类型,应该拥有哪些成员以及应该拥有哪些名称空间的问题是OO设计的问题.它们不是我在这里感兴趣的问题.

相反,我想问一下如何将这些存储在磁盘工件中.以下是一些示例规则:

  • 将所有程序集的类型放在单个源文件中.一位做过此事的朋友说"文件是一个僵尸代码组织工具;今天我使用classview和Collapse to Definitions来浏览我的代码".

  • 将所有代码放在一个程序集中.使部署和版本控制更简单.

  • 目录结构反映命名空间结构

  • 每个命名空间都有自己的程序集

  • 每种类型都有自己的组装.(列为一个极端的例子.)

  • 每种类型都有自己的源文件.

  • 每个成员都有自己的文件; 每种类型都有自己的目录.(列为一个极端的例子.)

c# code-organization

14
推荐指数
2
解决办法
7244
查看次数

有没有办法从派生类型到达另一个对象的`protected`成员?

class MyBase
{
    protected object PropertyOfBase { get; set; }
}

class MyType : MyBase
{
    void MyMethod(MyBase parameter)
    {
        // I am looking for:
        object p = parameter.PropertyOfBase;  // error CS1540: Cannot access protected member 'MyBase.PropertyOfBase' via a qualifier of type 'MyBase'; the qualifier must be of type 'MyType' (or derived from it)
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法从没有反射的扩展类型获取类型参数的受保护属性?由于扩展类通过其基类型知道属性,因此如果可能的话,它将是有意义的.

c# oop

14
推荐指数
3
解决办法
3760
查看次数

调试C++宏有一个很好的通用方法吗?

通常,我偶尔会有一系列嵌套宏,其定义中包含一些预处理器条件元素.这些可能很难调试,因为很难直接看到正在执行的代码.

前一段时间我依稀记得找到一个编译器(gcc)标志来扩展它们,但是我在实践中遇到这个问题很困难.

c++ debugging macros gcc

13
推荐指数
3
解决办法
2823
查看次数

在.NET中管理依赖关系树的最佳方法是什么?

在我的上一个项目中,我们使用MSBuild作为脚本语言.(是的,真的!)我们还编写了数百个自定义MSBuild任务,用于在C#中更有意义的部分.(我甚至编写了一个MSBuild任务来为MSBuild任务生成样板代码.是的,它会自行消耗.)

虽然我不建议其他人采用相同的方法,但我发现非常有用的一件事是内置的依赖关系管理.正如您所期望的那样,表达依赖关系很容易,让MSBuild能够满足它们.例如,我们软件中的几乎每一步都要求将某组文件复制到某个位置.你可以轻松写:

Step1: CopyFiles
Step2: CopyFiles, Step1
Run Code Online (Sandbox Code Playgroud)

当你执行时Step2,它只会复制一次文件.

构建和满足依赖树在软件中非常常见.我希望MSBuild团队能够获取他们的依赖管理代码,将其与MSBuild分离,并将其移至.NET Framework,任何人都可以使用它.Baring that,您认为以这种方式管理依赖项的最佳选择是什么?

.net msbuild dependency-injection dependency-management refix

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

在Visual Studio中是否有按键来切换所有CLR异常中断,第一次机会?

要立即切换所有例外,我必须:

  1. 调试 - >例外
  2. 单击Thrown"公共语言运行时Eceptions"旁边的列

在此输入图像描述

通常我想停止所有异常,但是当使用在主线情况下使用异常的代码时,我需要禁用该行为.按键会很好.

c# debugging exception visual-studio

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