【问题标题】:What is the C# equivalent of VB.Net " IsDBNull"VB.Net“IsDBNull”的 C# 等价物是什么
【发布时间】:2015-06-04 19:53:18
【问题描述】:

在 VB.Net 中你可以写:

If Not IsDBNull(oCustomerNameDataRow(0)) Then
    cbCustomerName.Items.Add(oCustomerNameDataRow(0).ToString
End If

C#中IsDBNull方法的等价物是什么?

【问题讨论】:

  • 致反对者:这是一个可行且很好的问题 - 要么找到一个理由来标记它(例如之前可能已经被问过),要么停止反对 - 谢谢
  • 我没有投反对票,但这似乎很容易在 MSDN 上查到。
  • @RickDavin 好像是?你有没有尝试过?如果是这样,您搜索了什么?我在 MSDN 上找不到任何可以回答这个问题的内容。

标签: c# vb.net


【解决方案1】:
if (!DBNull.Value.Equals(oCustomerNameDataRow[0]))
{
  //something
}

MSDN (DBNull.Value)

【讨论】:

【解决方案2】:

我会说相当于位于Microsoft.VisualBasic assembley 中的IsDBNull 方法(Microsoft.VisualBasic.Information)

Public Function IsDBNull(ByVal Expression As Object) As Boolean
    If Expression Is Nothing Then
        Return False
    ElseIf TypeOf Expression Is System.DBNull Then
        Return True
    Else
        Return False
    End If
End Function
Dim result As Boolean = IsDBNull(Nothing)

是位于mscorlib assembley 中的IsDBNull 方法(System.Convert):

public static bool IsDBNull(object value) {
    if (value == System.DBNull.Value) return true;
    IConvertible convertible = value as IConvertible;
    return convertible != null? convertible.GetTypeCode() == TypeCode.DBNull: false;
}
bool result = System.Convert.IsDBNull(null);

【讨论】:

  • 不一样对于 VB.NET NET 4.5 IsDBNull:If (Expression IsNot Nothing) Then flag = If(Not TypeOf Expression Is DBNull, False, True) Else flag = False End If
【解决方案3】:

试试这个:

创建Extension Method。按照这个:

public static bool IsDBNull(this object val)
{
     return Convert.IsDBNull(val);
}

以及从这个Extension Method的使用。

if(oCustomerNameDataRow[0].IsDBNull())
{
      // ...
}

希望有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 2013-05-17
    相关资源
    最近更新 更多