草庐IT

行为不当

全部标签

c# - Int 和 Int 的 FirstOrDefault 行为?

我刚刚读了一个SOpost这解释了FirstOrDefault()的返回类型将根据所选元素的值而变化。例子:ICollectionlist=newList();list.Add("bye");inta=(fromxinlistwhere(x=="hi")selectx.Length).FirstOrDefault();在这个例子中,a将等于0,因为int默认值为0。但是,我可以附加.Cast()根据已经链接的帖子以获得null当查询返回0个结果时。int?a=(fromxinlistwhere...x.Length).Cast().FirstOrDefault();在我的第一个示例中,

c# - 如何用重载和覆盖方法来解释这种行为?

这个问题在这里已经有了答案:Overloadresolutionandvirtualmethods(5个答案)关闭8年前。谁能如此友善并向我解释为什么此代码显示Derived.DoWork(double)。我可以对这种行为提出一些解释,但我希望有人为我澄清这一点。usingSystem;publicclassBase{publicvirtualvoidDoWork(intparam){Console.WriteLine("Base.DoWork");}}publicclassDerived:Base{publicoverridevoidDoWork(intparam){Console.

c# - 这种闭包组合行为是 C# 编译器错误吗?

我在调查一些奇怪的对象生命周期问题时,发现了C#编译器的这种非常令人费解的行为:考虑以下测试类:classTest{delegateStreamCreateStream();CreateStreamTestMethod(IEnumerabledata){stringfile="dummy.txt";varhashSet=newHashSet();varcount=data.Count(s=>hashSet.Add(s));CreateStreamcreateStream=()=>File.OpenRead(file);returncreateStream;}}编译器生成以下内容:int

c# - Dictionary<Key, Value> 上 .NET 二进制序列化的奇怪行为

我在.NET的二进制序列化中遇到了一个奇怪的行为,至少符合我的预期。在OnDeserialization回调之后,加载的Dictionary的所有项目都被添加到它们的父级。相比之下,List则采用另一种方式。这在现实世界的存储库代码中可能真的很烦人,例如,当您需要向字典项添加一些委托(delegate)时。请检查示例代码并观察断言。这是正常行为吗?[Serializable]publicclassData:IDeserializationCallback{publicListList{get;set;}publicDictionaryDictionary{get;set;}public

c# - 模拟 'System.Console' 行为

是否有一种标准方法可以通过针对接口(interface)而不是System.Console进行编程来使C#控制台应用程序可单元测试?例如,使用IConsole界面?你做过吗,用的是什么方法?当您的应用程序需要写入标准输出时,您是否公开了事件? 最佳答案 我认为您使用接口(interface)的方法可行,但我认为我不会使用事件。假设应用程序不接受命令行参数以外的用户输入,我可能会使用类似这样的东西来包装Console.Write/Console.WriteLine:publicinterfaceIConsoleWriter{voidW

c# - 将零参数作为参数传递——行为定义在哪里?

C#规范。允许你调用一个函数voidfoo(paramsint[]x)零参数。但是,我没有在C#Lang中找到。规范关于进一步的行为——foo会得到空数组或空引用吗?我还检查了MSDN——什么也没有。行为定义在哪里?注意:我不是在问VS的行为,我是在问语言的设计。 最佳答案 C#语言规范第7.4.1节(引用:C#3.0spec)Inparticular,notethatanemptyarrayiscreatedwhentherearezeroargumentsgivenfortheparameterarray.这是该节的最后一行

c# - TypeConverter 行为不一致?

我正在开发一个IValueConverter实现,它可以转换bool?值。为了通用性,我决定使用TypeConverter将输入值转换为bool?。因为它的主要目的是用作XAML绑定(bind)的转换器,所以我想避免抛出异常,因为它会导致UI性能显着下降。为此,我尝试使用TypeConverter.IsValid方法,但遇到了奇怪的行为,以下代码中显示了一个示例://returnedconverterisaNullableConvertervarconverter=TypeDescriptor.GetConverter(typeof(bool?));//thismethodreturn

c# - 你能用可选参数解释一下 c# 的这种奇怪行为吗?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C#optionalparametersonoverriddenmethods这是以下代码的输出:Peter:-1Peter:0Fred:1Fred:1你能解释一下为什么Peterp.TellYourAge()和p.DoSomething()的调用不一样吗?这里是您自己尝试的代码(VS2010和FW4):staticvoidMain(string[]args){Peterp=newPeter();p.TellYourAge();//expected-1,result:-1p.DoSomething();//e

c# - 为什么 Enter 和 Space 键对按钮的行为不同?

据我所知,这些是唯一在按钮具有焦点时使用react的键。按下Enter会立即“点击”按钮,即使您一直按住该键也是如此。(因此“点击”发生在KeyDown上)。按下Space更像是普通的鼠标点击;按住它不会激活Click事件,但一旦松开它就会激活。(因此“点击”发生在KeyUp或KeyPressed上。)为什么不同?我想要一篇关于该主题的好文章,或者只是关于为什么这两个键具有不同行为的逻辑解释。肯定有解释! 最佳答案 我找不到任何解释这个问题的文章,这是一个非常好的问题。我个人认为这是出于功能目的EnterKey经典的AcceptBu

c# - 具有行为和 ORM 的丰富域模型

在观看了JimmyBogard(http://ndcoslo.oktaset.com/Agenda)的NDC12演讲“制作邪恶的领域模型”之后,我在徘徊如何保持这种领域模型。这是演示文稿中的示例类:publicclassMember{List_offers;publicMember(stringfirstName,stringlastName){FirstName=firstName;LastName=lastName;_offers=newList();}publicstringFirstName{get;set;}publicstringLastName{get;set;}publ