C# 以下模式可以接受吗?

C# 以下模式可以接受吗?,c#,design-patterns,C#,Design Patterns,我正试图找到一种可以接受的模式,使用企业库从数据库中读取数据。你如何看待下面的模式(我的意思是,中的空校验>最后/代码>块)? 此空检查是否可以接受,或者是否有更优雅的方法解决此问题?它与: if (NewReader != null) ... 从造型的角度来看,我更喜欢它 更新: 由于NewReader似乎实现了IDisposable,只需使用构造将其包装在中即可 例如: using (var r = new ReaderSomething()) { try { } cat

我正试图找到一种可以接受的模式,使用企业库从数据库中读取数据。你如何看待下面的模式(我的意思是,<代码>中的空校验>最后/代码>块)?

此空检查是否可以接受,或者是否有更优雅的方法解决此问题?

它与:

if (NewReader != null) ... 
从造型的角度来看,我更喜欢它

更新:

由于
NewReader
似乎实现了
IDisposable
,只需使用
构造将其包装在
中即可

例如:

using (var r = new ReaderSomething())
{
  try
  {
  }
  catch {}
}
如果(NewReader==null),我将使用
。这是检查
null
的默认方法。你这样做的方式是相同的,但它看起来很奇怪,因此可能会混淆人们

此外:你为什么不使用
呢?使您的代码更加清晰:

try
{
    using(IDataReader NewReader = (SqlDataReader)(SqlDatabase.ExecuteReader(SqlCommand)))
    {
        /* Do some work with NewReader. */
    }
}
catch /* As much 'catch' blocks as necessary */
{
    /* Handle exceptions */
}
我更喜欢使用“使用”块作为:

using(<your reader object>)
{
   //read data from reader
}
使用()
{
//从读卡器读取数据
}

只是想为人们上面所说的话添加一点细节

使用using块作为,无论是否发生异常,由于IDataReader的实现也必须实现IDisposable,将自动调用Dispose方法

using(<your reader object>)
{
   //read data from reader
}