草庐IT

Compare-Object

全部标签

c# - List.Sort 在 C# : comparer being called with null object

我在使用内置C#List.Sort函数和自定义比较器时出现奇怪的行为。出于某种原因,它有时会使用空对象作为参数之一调用比较器类的Compare方法。但是,如果我使用调试器检查列表,则集合中没有空对象。我的比较器类如下所示:publicclassDelegateToComparer:IComparer{privatereadonlyFunc_comparer;publicintCompare(Tx,Ty){return_comparer(x,y);}publicDelegateToComparer(Funccomparer){_comparer=comparer;}}这允许将委托(del

c# - 神秘的 System.Object.GetType() NullReferenceException

我们的程序发生崩溃,现在无法重现。我试图输入一些代码以防止它再次发生,但我对堆栈跟踪感到困惑。System.NullReferenceException:Objectreferencenotsettoaninstanceofanobject.atSystem.Object.GetType()atProject.ViewModel.MainVM.b__8(Objecta)atSystem.Windows.Controls.Button.OnClick()--我已经减少了堆栈跟踪,因为它只是进入了一堆系统代码,而这些代码只是与被单击的按钮有关。--我已经设法推断出它指向我的CreateCo

c# - 神秘的 System.Object.GetType() NullReferenceException

我们的程序发生崩溃,现在无法重现。我试图输入一些代码以防止它再次发生,但我对堆栈跟踪感到困惑。System.NullReferenceException:Objectreferencenotsettoaninstanceofanobject.atSystem.Object.GetType()atProject.ViewModel.MainVM.b__8(Objecta)atSystem.Windows.Controls.Button.OnClick()--我已经减少了堆栈跟踪,因为它只是进入了一堆系统代码,而这些代码只是与被单击的按钮有关。--我已经设法推断出它指向我的CreateCo

c# - 将数组传递给采用参数 object[] 或 IEnumerable<T> 的函数

我想将一个自定义对象数组传递给类似String.Join的函数具有以下签名:publicstaticstringJoin(stringseparator,paramsObject[]values)publicstaticstringJoin(stringseparator,IEnumerablevalues)如果我这样调用函数:vararr=newMyClass[]{newMyClass(),newMyClass()};stringtext=string.Join("\n",arr);我得到一个编译器错误:Thecallisambiguousbetweenthefollowingmet

c# - 将数组传递给采用参数 object[] 或 IEnumerable<T> 的函数

我想将一个自定义对象数组传递给类似String.Join的函数具有以下签名:publicstaticstringJoin(stringseparator,paramsObject[]values)publicstaticstringJoin(stringseparator,IEnumerablevalues)如果我这样调用函数:vararr=newMyClass[]{newMyClass(),newMyClass()};stringtext=string.Join("\n",arr);我得到一个编译器错误:Thecallisambiguousbetweenthefollowingmet

c# - 为什么将 IDictionary<TKey, TValue> 向上转换为 IEnumerable<object> 会失败?

请看下面的代码片段:(IEnumerable)newDictionary()上面的转换会抛出一个无效的转换异常。实际上,IDictionary还间接实现了IEnumerable,因为它还实现了ICollection.也就是说,整个Actor阵容应该是有效的。事实上,对我来说更奇怪的是,如果我在调试器watch插槽上运行整个转换,它会工作!这是怎么回事? 最佳答案 那个字典确实实现了IEnumerable>和IEnumerable,但是IEnumerable结构与IEnumerable不同一个对象。Varianceonlyworksf

c# - 为什么将 IDictionary<TKey, TValue> 向上转换为 IEnumerable<object> 会失败?

请看下面的代码片段:(IEnumerable)newDictionary()上面的转换会抛出一个无效的转换异常。实际上,IDictionary还间接实现了IEnumerable,因为它还实现了ICollection.也就是说,整个Actor阵容应该是有效的。事实上,对我来说更奇怪的是,如果我在调试器watch插槽上运行整个转换,它会工作!这是怎么回事? 最佳答案 那个字典确实实现了IEnumerable>和IEnumerable,但是IEnumerable结构与IEnumerable不同一个对象。Varianceonlyworksf

c# - 事件目录服务 : PrincipalContext -- What is the DN of a "container" object?

我目前正在尝试使用PrincipalContext类通过ActiveDirectory服务进行身份验证。我想让我的应用程序使用密封和SSL上下文对域进行身份验证。为此,我必须使用thefollowingconstructorofPrincipalContext(linktoMSDNpage):publicPrincipalContext(ContextTypecontextType,stringname,stringcontainer,ContextOptionsoptions)具体来说,我是这样使用构造函数的:PrincipalContextdomainContext=newPrin

c# - 事件目录服务 : PrincipalContext -- What is the DN of a "container" object?

我目前正在尝试使用PrincipalContext类通过ActiveDirectory服务进行身份验证。我想让我的应用程序使用密封和SSL上下文对域进行身份验证。为此,我必须使用thefollowingconstructorofPrincipalContext(linktoMSDNpage):publicPrincipalContext(ContextTypecontextType,stringname,stringcontainer,ContextOptionsoptions)具体来说,我是这样使用构造函数的:PrincipalContextdomainContext=newPrin

c# - 引用平等表现差异? ((object)obj1 == (object)obj2) 与 object.ReferenceEquals( obj1, obj2 )

使用object.ReferenceEquals方法与使用((object)obj1==(object)obj2)是否有额外的开销?在第一种情况下,会涉及静态方法调用,而在这两种情况下,都会涉及某种形式的对象转换。即使编译器平衡了这些方法,不等式又如何呢?(object)obj!=null与...相比!object.ReferenceEquals(obj,null)我想在某些时候,逻辑否定会发生,要么在!=运算符内,要么应用于ReferenceEquals方法的结果。你怎么看?还有可读性问题需要考虑。ReferenceEquals在检查相等时似乎更清晰,但对于不等式,人们可能会错过ob