2015-10-18 27 views
-3

的我的代碼段是爲什麼我在TryParse上得到一個ArgumentException?

private static void parseEquationArgs (string [] cargs, Dictionary<int,Int64> argdic) 
    { 
     // cargs: Command-line arguments 
     // argdic: Dictionary in which to place the equation arguments 

     Int64 thisval; 
     for (int k = 1, n = cargs.Length; k < n; ++k) 
     { 
      // TryParse reference: https://msdn.microsoft.com/en-us/library/system.int64.tryparse(v=vs.110).aspx 
      if (Int64.TryParse(cargs[k],thisval)) 
      { 

和錯誤是

的最佳重載方法匹配「long.TryParse(字符串,出長)」有一些無效的參數。如果我使用long而不是上面的Int64,我會得到同樣的錯誤。總之,文件說,一個簽名是

public static bool TryParse(
    string s, 
    out long result 
) 

,所以我不明白髮生了什麼事情錯在這裏...

任何想法?

+0

文檔是否使用樣品展示如何使用功能?您提供的鏈接[Int64.TryParse方法](https://msdn.microsoft.com/en-us/library/zc2x2b1h%28v=vs.110%29.aspx)確實顯示如何調用方法 - 不是當然,爲什麼你想出了你自己的方式。你是否希望通過省略'out'來實現其他行爲?如果代碼無法編譯,你如何獲得運行時'ArgumentException'? –

回答

0

由於您未使用out修飾符,因此出現錯誤。這是必需的,你不能忽略它。更改

if (Int64.TryParse(cargs[k],thisval)) 

if (Int64.TryParse(cargs[k], out thisval)) 
+0

啊,對不起。我認爲這會做一個隱含的演員。我來自C++背景,在C++中,可以將參數作爲參考類型,然後使用值類型調用該函數。 –

相關問題