![]() |
1
9
你的建议也是我得出的结论 when thinking about this issue
NET中惯用的做法是使用构造函数使对象处于可使用状态。有些人会建议使用一个简单的构造函数,然后使用
无论如何,我认为这是一种相当罕见的情况——通常包装一次性资源的类会将其作为构造函数参数,而不是自己创建。 |
![]() |
2
0
更好的解决办法是不这样做 任何 构造函数中的逻辑。只要创建对象,就可以开始了。如果确实需要在构造函数中执行某些操作,请使用try-catch-finally语句对其进行封装,以便释放非托管资源。 |
![]() |
3
0
你的处置实际上不是你的解构主义者吗? 你基本上是想用RAII吗? 我的整个计划
|
![]() |
4
0
在构造函数参数上做断言是第一步。断言任何后续逻辑都不会引发异常。也就是说,断言构造函数逻辑中使用的任何数据对于该特定用途都是有效的。像这样:
如果空字符串会导致c1抛出异常。 如果您无法确保输入验证不会引发异常。重写代码,这样你就可以了。因为那将是一种非常强烈的气味。如果引发异常的代码不是用户,而是供应商更改供应商。这将不是您在使用他们的代码时遇到的最后一个问题。 |
![]() |
5
0
在“try”中包装构造函数体并在失败时调用Dispose可能是一件尽可能好的事情。不过,我建议不要使用“Try Catch”,而是使用“Try Finally”,并在“Try”末尾设置“ok”标志。如果在构造器期间抛出了一些东西,那么调试器将有机会在抛出时查看系统状态。
看到我的问题了吗 Handling iDisposable in failed initializer or constructor |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |