草庐IT

Block-scoped

全部标签

c# - 使用 'try-finally' block 而不使用 'catch' block

在某些情况下是否适合使用try-finallyblock而不使用catchblock? 最佳答案 您可以使用它来确保某些操作发生在try内容之后或发生异常时,但您不希望使用该异常。需要说明的是,这并没有隐藏异常。finallyblock在异常传播到调用堆栈之前运行。当你使用using关键字时,你也会无意中使用它,因为这会编译成一个try-finally(不是一个精确的转换,但为了论证它是足够接近)。try{TrySomeCodeThatMightException();}finally{CleanupEvenOnFailure();

c# - 使用 'try-finally' block 而不使用 'catch' block

在某些情况下是否适合使用try-finallyblock而不使用catchblock? 最佳答案 您可以使用它来确保某些操作发生在try内容之后或发生异常时,但您不希望使用该异常。需要说明的是,这并没有隐藏异常。finallyblock在异常传播到调用堆栈之前运行。当你使用using关键字时,你也会无意中使用它,因为这会编译成一个try-finally(不是一个精确的转换,但为了论证它是足够接近)。try{TrySomeCodeThatMightException();}finally{CleanupEvenOnFailure();

c# - 是否存在不会为 'using' block 调用 Dispose 的情况?

这是我遇到的一个电话面试问题:是否有时不会在范围由usingblock声明的对象上调用Dispose?我的回答是否定的-即使在usingblock期间发生异常,Dispose仍将被调用。面试官不同意,说如果using被包裹在try-catchblock中,那么在你进入的时候Dispose不会被调用捕获block。这与我对结构的理解背道而驰,而且我一直没能找到任何可以支持面试官观点的东西。他是对的还是我误解了这个问题? 最佳答案 导致在usingblock中不调用Dispose的四种情况:在usingblock内时机器出现电源故障。您

c# - 是否存在不会为 'using' block 调用 Dispose 的情况?

这是我遇到的一个电话面试问题:是否有时不会在范围由usingblock声明的对象上调用Dispose?我的回答是否定的-即使在usingblock期间发生异常,Dispose仍将被调用。面试官不同意,说如果using被包裹在try-catchblock中,那么在你进入的时候Dispose不会被调用捕获block。这与我对结构的理解背道而驰,而且我一直没能找到任何可以支持面试官观点的东西。他是对的还是我误解了这个问题? 最佳答案 导致在usingblock中不调用Dispose的四种情况:在usingblock内时机器出现电源故障。您

c# - 应用程序配置 : User vs Application Scope

我已经在我的项目中添加了App.config文件。我从Project>Properties>Settings面板创建了两个设置-我注意到,当我添加设置时,我可以将范围定义为User或Application。-用户申请如果我将设置定义为User它会转到userSettings部分,如果我将设置定义为Application它会转到applicationSettings部分App.configValue1Value2但是,可以从.cs-以相同的方式访问这些设置代码stringmySetting1=DemoApp.Properties.Settings.Default.MySetting1;s

c# - 应用程序配置 : User vs Application Scope

我已经在我的项目中添加了App.config文件。我从Project>Properties>Settings面板创建了两个设置-我注意到,当我添加设置时,我可以将范围定义为User或Application。-用户申请如果我将设置定义为User它会转到userSettings部分,如果我将设置定义为Application它会转到applicationSettings部分App.configValue1Value2但是,可以从.cs-以相同的方式访问这些设置代码stringmySetting1=DemoApp.Properties.Settings.Default.MySetting1;s

c# - 为什么 yield return 不能出现在带有 catch 的 try block 中?

以下是可以的:try{Console.WriteLine("Before");yieldreturn1;Console.WriteLine("After");}finally{Console.WriteLine("Done");}finallyblock在整个事情完成执行时运行(IEnumerator支持IDisposable以提供一种方法来确保这一点,即使枚举在完成之前被放弃)。但这不行:try{Console.WriteLine("Before");yieldreturn1;//errorCS1626:Cannotyieldavalueinthebodyofatryblockwit

c# - 为什么 yield return 不能出现在带有 catch 的 try block 中?

以下是可以的:try{Console.WriteLine("Before");yieldreturn1;Console.WriteLine("After");}finally{Console.WriteLine("Done");}finallyblock在整个事情完成执行时运行(IEnumerator支持IDisposable以提供一种方法来确保这一点,即使枚举在完成之前被放弃)。但这不行:try{Console.WriteLine("Before");yieldreturn1;//errorCS1626:Cannotyieldavalueinthebodyofatryblockwit

c# - 使用 IDisposable 和 "using"作为获取 "scoped behavior"以实现异常安全的手段是否滥用?

我在C++中经常使用的东西是让一个类A处理另一个类的状态进入和退出条件B,通过A构造函数和析构函数,以确保如果该范围内的某些内容引发异常,则B在退出范围时将具有已知状态。就首字母缩略词而言,这不是纯粹的RAII,但它仍然是一种既定的模式。在C#中,我经常想做classFrobbleManager{...privatevoidFiddleTheFrobble(){this.Frobble.Unlock();Foo();//Canthrowthis.Frobble.Fiddle();//CanthrowBar();//Canthrowthis.Frobble.Lock();}}需要这样做p

c# - 使用 IDisposable 和 "using"作为获取 "scoped behavior"以实现异常安全的手段是否滥用?

我在C++中经常使用的东西是让一个类A处理另一个类的状态进入和退出条件B,通过A构造函数和析构函数,以确保如果该范围内的某些内容引发异常,则B在退出范围时将具有已知状态。就首字母缩略词而言,这不是纯粹的RAII,但它仍然是一种既定的模式。在C#中,我经常想做classFrobbleManager{...privatevoidFiddleTheFrobble(){this.Frobble.Unlock();Foo();//Canthrowthis.Frobble.Fiddle();//CanthrowBar();//Canthrowthis.Frobble.Lock();}}需要这样做p