小编mhe*_*rle的帖子

C#编译器没有将yield return方法识别为类似?

如果我有两个yield return具有相同签名的方法,则编译器似乎没有认识到它们是相似的.

我有两种yield return方法:

    public static IEnumerable<int> OddNumbers(int N)
    {
        for (int i = 0; i < N; i++)
            if (i % 2 == 1) yield return i;
    }
    public static IEnumerable<int> EvenNumbers(int N)
    {
        for (int i = 0; i < N; i++)
            if (i % 2 == 0) yield return i;
    }
Run Code Online (Sandbox Code Playgroud)

有了这个,我希望以下语句编译好:

Func<int, IEnumerable<int>> generator = 1 == 0 ? EvenNumbers : OddNumbers; // Does not compile

我收到错误消息

无法确定条件表达式的类型,因为"方法组"和"方法组"之间没有隐式转换

但是,一个明确的演员工作:

Func<int, IEnumerable<int>> newGen …

c# compiler-construction yield-return compiler-bug visual-studio-2010-sp1

10
推荐指数
2
解决办法
541
查看次数

CLR什么时候说对象有终结器?

我知道在C#中,如果你写~MyClass(),这基本上转化为override System.Object.Finalize().因此,无论您是否编写析构函数,CLR中的每个类型都会有一个Finalize()方法(System.Object至少).

1]那么,这是否意味着,默认情况下,每个对象都有一个终结器?

2] CLR决定一个对象应该通过终结队列的基础是什么?

我问这个,因为,我有一个课,说ManagedResourceHolder实施IDisposable,但没有调用GC.SuppressFinalize(this)它的IDisposable.Dispose()方法.该类没有任何非托管资源,并且不需要该~ManagedResourceHolder()方法,这反过来意味着不需要 GC.SuppressFinalize(this)调用,因为没有终结器.

3]在上述场景的上下文中,在实现IDisposable时是否总是需要提供终结器?(即使在没有非托管资源的类上)

该FxCop的规则CA1816是给我一个违反了这一点,我得到的回应在这里,当我问在MSDN上的CA论坛搞糊涂了.

谢谢.

.net c# garbage-collection memory-management

9
推荐指数
1
解决办法
993
查看次数

装运组件fxcop中的.NET [SuppressMessage]属性

我想知道人们(意味着公司/开发人员)是否真的关心装运组件中存在[SuppressMessage]属性.

在Project文件中创建单独的配置,在Release模式下包含CODE_ANALYSIS,然后在最终版本中将其删除,这对我来说似乎是一种可以避免的开销.

什么是最好的策略,如果一个人不希望这些保留在最终组装但仍想在代码中使用它们?将它们存储在FxCop项目文件中是否有任何优点/缺点?

[我来自VS2008 Pro + FxCop 1.36,而非VS2008 Team System]

.net c# fxcop

7
推荐指数
2
解决办法
2282
查看次数

在Dispose(bool)方法实现中,是否应该将成员设置为null?

讨论IDisposable模式的指南/注释/文章都没有提出应该nullDispose(bool)方法中设置内部成员(特别是如果它们是内存占用的野兽).

在调试内部基准测试工具时,我逐渐意识到它的重要性.过去常见的是,这个缓冲区内部包含一个大数组.我们过去常常为整个基准程序使用静态缓冲区.一旦我们完成缓冲区,我们就无法释放这个内部数组,也不能让这个缓冲区可释放(因为它是静态的).

所以,我相信,在Dispose()调用之后,类应该尽其所能,以便它释放它正在使用的所有资源并使它们再次可用,即使被处理的对象本身没有被GC收回,也没有设置因此,成员为null,不允许GC收集内部对象意味着Dispose实现并不完美.

你对此有何看法?

.net c# garbage-collection dispose memory-management

4
推荐指数
1
解决办法
1524
查看次数