2013-03-26 59 views
-1

我想寫一個函數來將string「12345」的內容轉換爲int字符串數值轉換在c#

如果字符串爲空,我想返回null(未初始化),而不是值0

問題是,函數不會返回未初始化的值。

我的代碼將無法編譯爲RETVAL可以返回未初始化值......

我試圖至今:

public int ConvertStringToNumber(String TheString) 
{ 
    // Uninitialized 
    int Retval; 

    if (TheString.Length > 0) 
    { 
     // We have a valid string 
     if (Int32.TryParse(TheString, out Retval)) 
     { 
      // We have a valid Number 
     } 
    } 

    // Return the number or null 
    return Retval; 
} 

回答

-2
int? x = ConvertStringToNumber("1"); 

int值= x.Value;

字符串到數字的轉換在C#

1

您可以使用可空INT(更多信息here)。

可爲空的類型可以表示一個基礎類型的所有值,並且可以爲一個附加的空值。

public int? ConvertStringToNumber(String TheString) 
{ 
    int retval; 
    bool isInt = Int32.TryParse(TheString, out retval); 
    return isInt ? retval : null; 
} 

注意:當使用可空類型,你需要使用強制或得到它的價值。請參閱here

例子:

int? n = ConvertStringToNumber("123"); 

int value = n.Value; 
// or 
int value = (int)n; 
+0

只是代碼,沒有解釋? – CodeCaster 2013-03-26 07:22:27

-1

簡單的擴展方法來解決你的問題

using System; 

namespace temp 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string valu = ""; 
      Console.WriteLine(valu.ToInt32()); 
      Console.ReadLine(); 
     } 
    } 
    public static class MyExtentions 
    { 
     public static int ToInt32(this string s) 
     { 
      int x; 
      if (s != null) 
      { 
       if (s.Length > 1) 
        x = Convert.ToInt32(s); 
       else 
        x = 0; 
      } 
      else 
      { 
       x= 0; 
      } 
      return x; 
     } 
    } 
} 
0

因爲Int32.TryParse(TheString, out Retval)需要的int類型不能爲空

public int? ConvertStringToNumber(String TheString) 
{ 

    // Uninitialized 
    int Retval; 

    if (TheString.Length > 0) 
    { 

     // We have a valid string 

     if (Int32.TryParse(TheString, out Retval)) 
     { 

      // We have a valid Number 
      return Retval; 
     } 

    } 

      // Return the number or null 

    return null; 
} 
0

如果您分配一個值Retval對象在第一個TIM E,那麼該值僅在該區域有效。 所以,當你返回它時,Retval是空的。