2017-03-02 243 views
2

我是VB.net編碼器,現在已經有好幾年了。由於軟件公司將默認SDK更改爲C#,我最近被推入學習C#。我不介意挑戰。我目前正在處理這個Array函數。我認爲我已經正確地調出變量,並且我的If語句結構正確。我唯一的問題是代碼塊末尾的返回變量下面有一條紅色的波浪線。紅色的波形意味着我有錯誤或返回語法不正確。我沒有看到我有什麼錯,所以我要求第二個意見。爲什麼我的c#類函數返回顯示紅色波浪狀?

這裏是代碼類。這個類所做的是從表單接收一個Integer,它應該返回一個4到5位小數的double。

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Text; 
    using System.Threading.Tasks; 
    using static System.Math; 

    namespace CarterCalculationTools 
    { 
     public class FcmValue 
     { 
      public int FcmVal(int[] NeeNum) 
      { 
       var arrFcmVal = new double[61]; 
       double fcmResult; 

       arrFcmVal[6] = 6276; 
       arrFcmVal[7] = 7014.48155; 
       arrFcmVal[8] = 7553.5088; 
       arrFcmVal[9] = 7927.82976; 
       arrFcmVal[10] = 8210.66384; 
       arrFcmVal[11] = 8407.07949; 
       arrFcmVal[12] = 8544.72716; 
       arrFcmVal[13] = 8649.93887; 
       arrFcmVal[14] = 8707.52206; 
       arrFcmVal[15] = 8750.81112; 
       arrFcmVal[16] = 8771.81307; 
       arrFcmVal[17] = 8777.41987; 
       arrFcmVal[18] = 8770.4081; 
       arrFcmVal[19] = 8755.49639; 
       arrFcmVal[20] = 8735.9733; 
       arrFcmVal[21] = 8712.949; 
       arrFcmVal[22] = 8679.01338; 
       arrFcmVal[23] = 8644.57568; 
       arrFcmVal[24] = 8611.92784; 
       arrFcmVal[25] = 8575.37948; 
       arrFcmVal[26] = 8542.55544; 
       arrFcmVal[27] = 8495.9123; 
       arrFcmVal[28] = 8451.60508; 
       arrFcmVal[29] = 8409.80863; 
       arrFcmVal[30] = 8370.20725; 
       arrFcmVal[31] = 8334.23982; 
       arrFcmVal[32] = 8293.85668; 
       arrFcmVal[33] = 8252.51027; 
       arrFcmVal[34] = 8214.39145; 
       arrFcmVal[35] = 8177.75277; 
       arrFcmVal[36] = 8135.08678; 
       arrFcmVal[37] = 8095.31568; 
       arrFcmVal[38] = 8058.21202; 
       arrFcmVal[39] = 8023.5711; 
       arrFcmVal[40] = 7986.15127; 
       arrFcmVal[41] = 7949.5622; 
       arrFcmVal[42] = 7915.15875; 
       arrFcmVal[43] = 7882.78926; 
       arrFcmVal[44] = 7852.31547; 
       arrFcmVal[45] = 7822.26029; 
       arrFcmVal[46] = 7786.75829; 
       arrFcmVal[47] = 7753.07449; 
       arrFcmVal[48] = 7721.09674; 
       arrFcmVal[49] = 7690.72174; 
       arrFcmVal[50] = 7661.85424; 
       arrFcmVal[51] = 7634.40623; 
       arrFcmVal[52] = 7608.29631; 
       arrFcmVal[53] = 7578.34532; 
       arrFcmVal[54] = 7547.26788; 
       arrFcmVal[55] = 7517.52062; 
       arrFcmVal[56] = 7489.03351; 
       arrFcmVal[57] = 7461.74129; 
       arrFcmVal[58] = 7435.58307; 
       arrFcmVal[59] = 7410.50192; 
       arrFcmVal[60] = 7386.44464; 
       arrFcmVal[64] = 7291.45697;  

       if (Enumerable.Range(6,60).Contains(FcmVal(NeeNum))) 
       { fcmResult = arrFcmVal[FcmVal(NeeNum)]; 

       } 
       else if (FcmVal(NeeNum) == 64) 
       { 
        fcmResult = arrFcmVal[FcmVal(NeeNum)]; 
       } 

       else 
       {       
        fcmResult = -1; 
       } 
       return fcmResult; 
      } 
     } 
    } 

= UPDATE = 下面是用於從SQL表用數據填充的文本框的完成的代碼:

public void FcmValue() 
    { 
     string ConString = ConfigurationManager.ConnectionStrings["ConString"].ConnectionString; 
     string str = "SELECT [fcmVal] FROM [CalcTools].[dbo].[FcmValue] WHERE [neeNumCount] = @neeNumCount"; 
     using (SqlConnection con = new SqlConnection(ConString)) 
     { 
      //using (SqlCommand cmd = new SqlCommand("sp_frmNeedleCalc_FcmValue", con)) 
      using (SqlCommand cmd = new SqlCommand(str, con)) 
      { 
       cmd.Parameters.AddWithValue("@neeNumCount", nudNeeNum.Value); 

       if (con != null && con.State == ConnectionState.Closed) 
       { 
        con.Open(); 
       } 
       SqlDataReader rdr = cmd.ExecuteReader(); 

       while (rdr.Read()) 
       { 
        string fcmFactor = rdr["fcmVal"].ToString(); 
        txtFcmFactor.Text = fcmFactor; 
       } 
       con.Close(); 
      } 
     } 
    } 
+3

什麼是錯誤信息?檢查錯誤列表窗格或將鼠標懸停在紅色波浪線上。 – Brandon

+9

當你的方法返回一個int時,你試圖返回一個'double' –

+0

檢查這一行:'public int FcmVal(int [] NeeNum)' – Neal

回答

3

方法返回int,並fcmResult的類型爲double。 Red squigly在那裏,因爲double不能被隱式轉換爲int。你的方法應該返回兩倍。

+0

是的,這就是現在我知道的紅色矮胖的原因!謝謝!我目前正在改變我的條件,在「如果,然後其他」與雙倍工作。我會發布完成的代碼,以便其他人可以受益。 – sgwilliams

+0

查看原始問題中的更新以查看完成的代碼。 – sgwilliams

相關問題