我经常发现自己遇到这样的代码:
try
{
StreamWriter strw = new StreamWriter();
}
但是,没有引用try块范围之外的对象。我怎么能重构(提取到Visual Studio中的字段说没有字段或其他东西)try块中的语句,以便它在try块上面声明,所以我可以在方法的任何地方使用它?
由于
答案 0 :(得分:1)
您只需要拆分声明和作业。如果你有Resharper,有一种方法可以进行拆分,但你必须手动移动它:
StreamWriter strw = null;
try
{
strw = new StreamWriter();
}
catch()
{ // ...
通常,还需要添加(技术上无用的)= null;
,以防止在分配之前使用变量的潜在警告,因为赋值位于不同的范围内。这取决于你如何使用数据。
此外,由于StreamWriter
是IDisposable,因此您需要确保拥有可以处理的finally块,或将整个用法放在using
块中。
答案 1 :(得分:0)
StreamWriter strw = null;
try
{
strw = new StreamWriter();
}
但是对于StreamWriter
(IDisposable
),最好使用using
- 关键字:
using( StreamWriter strw = new StreamWriter() )
{
..
}