2017-06-21 139 views
2

我想下面的VB代碼轉換成C#VB.NET到C#轉換錯誤

VB代碼:

Public Class function_library 
    Public Shared Function handle_dbnull(ByVal value As Object, ByVal _type As System.Type) As Object 
    Select Case _type.ToString 
      Case GetType(Date).ToString, GetType(DateTime).ToString 
      If Not IsDBNull(value) Then 
       Return value 
      Else 
       Return New DateTime(0) 
      End If 
    End Select 

    Return value 
    End Function 
End Class 

目前的C#實現我的是:

public static object HandleDBNull(object value, Type _type) 
{ 
    switch (Type.GetTypeCode(_type)) 
    { 
     case typeof(DateTime?).ToString(): // This produces a cannot convert string to System.TypeCode error 
      if ((!ReferenceEquals(value, DBNull.Value))) 
      { 
       return value; 
      } 
      else 
      { 
       return null; 
      } 
    } 
} 

我曾嘗試使用其他Stackoverflow問題中提供的Web鏈接,以及VB到C#的在線轉換器,但都似乎沒有幫助解決我的問題。

什麼我可能是做錯了或者怎樣去解決這一問題將是巨大的任何意見,

盧克

+2

什麼是錯誤?這對於這個問題至關重要。不要將它隱藏在代碼註釋 –

+0

typeof(DateTime?)。ToString():爲什麼會有?在DateTime後標記 –

+1

[嗯...](https://stackoverflow.com/q/44671596/579895) – Pikoh

回答

0

你有開關(類型碼),並在「案例」你有串。 切換開關串:

switch (_type.ToString()) 
1

嘗試這樣

case TypeCode.DateTime: 

如果沒有檢查這個環節出去看看它是否有助於üTypeCode Enumeration

0

看來,它更容易從實現C#代碼從零開始

如果我理解你的權利,你想:

  1. 回報value如果valueDBNull.Value
  2. 回報DateTime(0)如果_typeDateTime
  3. 回報null否則

實現

public static object HandleDBNull(object value, Type _type) { 
    if (!object.ReferenceEquals(value, DBNull.Value)) 
    return value; 

    if (_type == typeof(DateTime)) 
    return new DateTime(0); 

    return null; 
}