2017-03-02 1 views
2

저는 지금 꽤 많은 년간 VB.net 코더입니다. 저는 최근에 C#으로 기본 SDK를 변경하는 소프트웨어 회사 때문에 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은 암시 적으로 int로 변환 될 수 없기 때문에 빨간색이 깔끔하게 나옵니다. 메서드는 double을 반환해야합니다.

+0

예, 이것이 빨간 squigglies가 나타난 이유입니다. 감사! 나는 현재 "if, then else"에서 내 조건을 변경하는 중이며 이중으로 작업합니다. 완성 된 코드를 게시하여 다른 사람들에게 도움이 될 수 있도록하겠습니다. – sgwilliams

+0

완성 된 코드를 보려면 원래 질문의 업데이트를 참조하십시오. – sgwilliams

관련 문제