草庐IT

c# - 根据类型和参数列表删除 ifs

我想重构以下递归方法:publicstaticvoidInitialize(Controlcontrol,DocumentContainercontainer,ErrorProviderprovider){if(control==null){return;}varcontrolWithTextBase=controlasICustomControlWithText;if(controlWithTextBase!=null){controlWithTextBase.DocumentLoaded=true;controlWithTextBase.Initialize(container,p

c# - 组合空检查和模式匹配的 'if' 语句时出错

以下按预期工作:dynamicfoo=GetFoo();if(foo!=null){if(fooisFooi){Console.WriteLine(i.Bar);}}但是如果我像这样组合if语句:if(foo!=null&&fooisFooi){Console.WriteLine(i.Bar);}然后我收到一个编译器警告使用未分配的局部变量“i”谁能解释为什么会这样? 最佳答案 看起来这实际上不是编译器错误。它之前被报告为错误here.但是,它已被关闭,因为它不是错误。原因是因为C#语言规范的这一部分(注意:我在这里引用GitHub

c# - 如何声明返回相同类型的 Func Delegate 的 Func Delegate?

我想编写一个方法来完成一些工作并最终返回另一个与原始方法具有相同签名的方法。这个想法是根据前一个字节值顺序处理字节流,而不用递归。通过这样调用它:MyDelegateexecuteMethod=handleFirstByte//WhatformshouldbeMyDelegate?foreach(BytemyByteinBytes){executeMethod=executeMethod(myByte);//doesstuffonbyteandreturnsthemethodtohandlethefollowingbyte}为了移交方法,我想将它们分配给Func委托(delegate)

c# - 即使条件评估为 false,If 语句似乎也在评估

昨晚工作到很晚,我们试图弄清楚为什么会出现故障。验证检查在不应该的时候失败了。我们最终向这段代码添加了一条打印语句(从Reflector反汇编以检查代码是否确实是我们编写的内容):publicstaticstringRedacted(stringname,DateTimelastModified){longticks=lastModified.Ticks;if((ticks!=(ticks-(ticks%10000L)))&&(lastModified!=DateTime.MaxValue)){Log.Debug(string.Format("LastModifiedDate='{0}

c# - C# 中作为 Func 的操作

我有一个以Func作为参数的参数化方法SomeTypeSomeMethod(Funcf){...}我想传递一个Action而不必重载该方法。但这带来了问题,您如何将Action表示为Func?我试过了Func但它无效。 最佳答案 您可以创建一个扩展方法来包装一个Action并返回一个虚拟值:publicstaticclassActionExtensions{publicstaticFuncToFunc(thisActionact){returna=>{act(a);returndefault(T)/*ora*/;};}}Action

c# - FluentAssertions ShouldNotThrow 无法识别异步方法/Func

我正在尝试检查异步方法抛出的具体异常。为此,我使用MSTEST和FluentAssertions2.0.1。我检查过这个DiscussiononCodeplex并查看它如何与异步异常方法一起工作,这是关于FluentAssertionsasynctests的另一个链接:尝试使用我的“生产”代码一段时间后,我关闭了Fluentassertions伪造的aync类,结果代码如下(将此代码放在[TestClass]中:[TestMethod]publicvoidTestThrowFromAsyncMethod(){varasyncObject=newAsyncClass();Actionac

c# - Automapper:ForMember 中的复杂 if else 语句

假设Date是一个可为null的DateTime:Mapper.CreateMap().ForMember(dest=>dest.Date,opt=>opt.MapFrom(src=>{DateTime?finalDate=null;if(src.HasDate=="N"){//soitshouldbenull}else{endResult=DateTime.Parse(src.Date.ToString());}returnfinalDate;}));我得到的错误是:Error30Alambdaexpressionwithastatementbodycannotbeconverted

c# - 接受 Expression<Func<T>> 表达式作为参数的扩展方法

我正在使用.NET4.5和C#我想创建扩展方法,允许我传递对象的属性,如果该对象的Id为0,则returnnull否则返回该属性值。我可以通过反射(reflection)来解决问题,所以请考虑更多的训练练习,而不是我试图解决实际问题。当前扩展方法位于static类中,如下所示:publicstaticobjectGetNullIfNotSet(thisWillAnsweranswer,Expression>expression){if(answer.Id==0)returnnull;returnexpression.Compile()();}我希望能够使用它的方式如下(答案类型为Wil

c# - Func 委托(delegate)与函数

谁能告诉我使用委托(delegate)而不是调用函数本身的优势,如下所示(或者换句话说,为什么选择选项A而不是选项B)?昨晚我在看某人的linq代码,他们有类似于选项A的东西,但它被用来返回编译的linq查询。我意识到前者现在可以传递给其他功能..只是不确定它的实用性。顺便说一句,我意识到这不会按原样编译。在发布之前取消注释其中一个函数。蒂亚classProgram{staticvoidMain(string[]args){Console.WriteLine(SayTwoWords("Hello","World"));Console.ReadKey();}//OptionAprivat

c# - 检查对象是否为 null 并在同一个 if 语句中比较对象的属性值是否安全?

请参阅线程标题。我是否可以安全地执行类似的操作而不用担心NullReferenceException,或者不能保证这些bool表达式将从左到右求值?//canthisthrowanNRE?if(obj==null||obj.property==value){//dosomething} 最佳答案 他们将从左到右进行评估,保证。所以是的,它是安全的。Theconditional-ORoperator(||)performsalogical-ORofitsbooloperands,butonlyevaluatesitssecondope