小编pro*_*mer的帖子

为什么'397'用于ReSharper GetHashCode覆盖?

像许多人一样,我使用ReSharper来加速开发过程.当您使用它来覆盖类的相等成员时,它为GetHashCode()生成的代码生成如下所示:

    public override int GetHashCode()
    {
        unchecked
        {
            int result = (Key != null ? Key.GetHashCode() : 0);
            result = (result * 397) ^ (EditableProperty != null ? EditableProperty.GetHashCode() : 0);
            result = (result * 397) ^ ObjectId;
            return result;
        }
    }
Run Code Online (Sandbox Code Playgroud)

当然我有一些自己的成员,但我想知道的是为什么397?

  • 编辑:所以我的问题会更好措辞,因为它是一个特殊的关于397素数除了它是素数?

resharper hash hash-code-uniqueness

145
推荐指数
3
解决办法
2万
查看次数

如何在C#中清除事件订阅?

参加以下C#课程:

c1 {
 event EventHandler someEvent;
}
Run Code Online (Sandbox Code Playgroud)

如果有很多订阅c1someEvent事件,我想清除所有这些,那么实现这一目标的最佳方法是什么?还要考虑对此事件的订阅可以是lambdas/anonymous delegates.

目前我的解决方案是添加一个ResetSubscriptions()方法,将c1其设置someEvent为null.我不知道这是否有任何看不见的后果.

.net c# events delegates

137
推荐指数
6
解决办法
9万
查看次数

Visual Studio 2008"随机"在测试运行时挂起

我们正在使用VS 2008 Team System和自动化测试套件,并且在运行测试时,测试主机"随机"锁定.我实际上必须杀死VSTestHost进程并重新运行测试以使某些事情发生,否则所有测试都处于"挂起"状态.

有没有人遇到类似的行为,并知道修复?我们这里有3个开发人员遇到相同的行为.

visual-studio-2008 visual-studio

17
推荐指数
1
解决办法
3864
查看次数

模拟IEnumerable <T>类型的GetEnumerator()方法

以下测试用例在rhino mocks中失败:

[TestFixture] 
    public class EnumeratorTest 
    { 
        [Test] 
        public void Should_be_able_to_use_enumerator_more_than_once() 
        { 
            var numbers = MockRepository.GenerateStub<INumbers>(); 
            numbers.Stub(x => x.GetEnumerator()).Return(new List<int> 
{ 1, 2, 3 }.GetEnumerator()); 
            var sut = new ObjectThatUsesEnumerator(); 
            var correctResult = sut.DoSomethingOverEnumerator2Times 
(numbers); 
            Assert.IsTrue(correctResult); 
        } 
    } 
    public class ObjectThatUsesEnumerator 
    { 
        public bool DoSomethingOverEnumerator2Times(INumbers numbers) 
        { 
            int sum1 = numbers.Sum(); // returns 6 
            int sum2 = numbers.Sum(); // returns 0 =[ 
            return sum1 + sum2 == sum1 * 2; 
        } 
    } 
    public interface INumbers : IEnumerable<int> { } 
Run Code Online (Sandbox Code Playgroud)

我认为这个测试用例有一些非常微妙的东西,我认为我不是在考虑Rhino …

c# rhino-mocks mocking

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

ReadUncommitted在SQLite中针对NHibernate打破了

我在一个利用NHibernate的项目中使用sqlite进行测试用例.一切都很好,除非我尝试创建一个ReadUncommitted事务:

例如Session.BeginTransaction(System.Data.IsolationLevel.ReadUncommitted)

错误消息是:

"的IsolationLevel"

(而已)

调用堆栈如下所示:

at System.Data.SQLite.SQLiteConnection.BeginDbTransaction(IsolationLevel isolationLevel)
at System.Data.Common.DbConnection.System.Data.IDbConnection.BeginTransaction(IsolationLevel isolationLevel)
at NHibernate.Transaction.AdoTransaction.Begin(IsolationLevel isolationLevel)
Run Code Online (Sandbox Code Playgroud)

如果我切换到不同的隔离级别(如序列化或readcommitted),一切都会正确执行.

想法?

NHibernate 2.1.2
SQLite (.NET version) 1.0.65.0
Fluent NHibernate 1.0
Run Code Online (Sandbox Code Playgroud)

sqlite nhibernate isolation-level

4
推荐指数
2
解决办法
1116
查看次数