草庐IT

Else-block

全部标签

c# - Using block 中的异步

我在C#中有以下异步函数:privateasyncTaskCallDatabaseAsync(Func>execAsync){using(varconnection=newSqlConnection(_connectionString)){connection.Open();returnawaitexecAsync(connection);}}它允许执行任何异步函数execAsync,该函数将SQL连接作为参数并使用它来进行数据库调用,方法是提供连接对象并确保其正确关闭。然后从WebApiController中的操作调用此函数,如下所示:publicasyncTaskMyAction(

c# - 等同于 C# 中 VB 的自定义 RaiseEvent block ?

(我知道标题听起来很简单,但等等——这可能不是您认为的问题。)在VB.NET中,我能够编写自定义事件。例如,我有一个单独的线程会定期引发一个事件,并且在该事件上需要更新GUI。我不想让繁忙的线程打扰UI计算,也不想将Me.Invoke(Sub()...)放在事件处理程序中,因为它也是从GUI线程调用的。我想出了这段非常有用的代码。GUI线程将设置EventSyncInvoke=Me(主窗体)。然后线程可以像往常一样简单地引发事件TestEvent,无需特殊代码,它将在GUI线程上无缝执行:PrivateTestEventDelegateAsEventHandlerPublicEvent

c# - WPF:使路径的整个 "block"可点击

我的一些Button有一个特殊的ControlTemplate。这很好用,但由于我使用的是Path(在本例中,它的形状就像一个胖X),确切的路径是可点击的,而不是X角之间的小空间。是否有任何自动魔法可以使X的整个“block”可点击?我考虑过将路径包裹在一个矩形对象中,但我只是想确保我没有遗漏一些微不足道的东西。 最佳答案 AviadP.是正确的。这就是我所做的:这是有效的,因为当“HitTest”以确定鼠标点击的路径时,“透明”画笔被认为是一种常规颜色。 关于c#-WPF:使路径的整个

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# : Blocking a function call until condition met

我正在开发一个C#Winforms应用程序,应用程序的一部分将使用AsyncUpload将文件上传到网络服务器(使用它,由于需要使用porgress回调),在C#程序中我有一个调用上传函数的简单for循环for(inti=0;i有趣的是有一些魔力:Uploadfun(){//Logiccomeshere//webClient.UploadFileAsyncrunsa2ndthreadtoperformupload..webClient.UploadFileAsync(uri,"PUT",fileNameOnHD);}异步上传完成时调用的回调Upload_Completed_callba

c# - 将文本 block 绑定(bind)到两个属性

我有一个绑定(bind)到ItemsSource集合中的属性的文本block。我想在同一个文本block中显示该类的两个属性,但似乎我一次只能执行一个绑定(bind)。我目前有这个:Text="{BindingTitle}"但我想附加另一个属性,所以理论上应该是:Text="{BindingTitle-Author}"输出看起来像“Shakespeare-RomeoandJuliet”。我试过添加逗号、另一个绑定(bind)和其他东西,但它们都会导致抛出异常(例如,元素TextBlock上的未知属性文本)。两个属性都来自同一个类,所以我不需要有两个数据源。

c# - 是否可以在 C# 的 if-else 语句中定义类似 'between' 的内容?

想请教比我C#能力强的人。是否可以减少下面的代码if(val>20&&val40&&val72&&val假设我有超过10-11个if-else语句。缩短上述代码的最佳方法是什么?我想在sql中使用类似between的东西。 最佳答案 定义一个extensionmethod:publicstaticboolBetween(thisintsource,inta,intb){returnsource>a&&source然后,使用它:if(val.Between(20,40))//...正如oɔɯǝɹ在他的评论中正确指出的那样,您可以更进一

c# - 语句 block 中的变量范围

for(inti=0;i根据我对范围的理解,第一个例子应该没​​问题。他们都不被允许的事实似乎更奇怪。当然'i'要么在范围内,要么不在范围内。是否有一些我不明白的关于范围的不明显的东西,这意味着编译器真的无法解决这个问题?或者只是保姆状态编译主义的一个例子? 最佳答案 Bymyunderstandingofscope,thefirstexampleshouldbefine.您对作用域的理解很好。这不是范围界定错误。这是简单名称错误的不一致使用。inti=10;//error,'i'alreadyexists这不是报告的错误。报告的错

c# - 如何将 if、else if 逻辑转换为三元运算符?

我只是想知道这是否可行,因为我开始使用三元运算符来减少代码行数并且我很喜欢它。if(x==y){z+=x;}elseif(x==z){z+=y;}else{z+=1;}如果只有一个这样的if语句,我现在可以这样做:z=x==y?z+=x:z+=1; 最佳答案 应该是这样的:z=x==y?z+x:x==z?z+y:z+1;如果您使用z+=x作为操作数,它最终会执行z=(z+=x)。虽然它在这种特殊情况下有效,但由于表达式z+=x的结果是z的最终值,它在其他情况下可能无效。但是,由于所有操作都有共同的z+=,您可以这样做:z+=x==y

c# - 具有返回类型的 try-catch block

如果我有一个返回某些东西的方法,比如publicDataTableReturnSomething(){try{//logicherereturnds.Tables[0];}catch(Exceptione){ErrorString=e.Message;}}这会产生编译器错误,显然是因为catch{}block没有返回任何内容。所以当我有带返回值的方法时,我不使用try-catchblock,这是一种不好的做法。如果有错误,我想将错误字符串设置为该错误。但是我也需要一个返回值。建议? 最佳答案 像这样将返回值存储在临时变量中:publ