2
if(API>30)
{
   double c1 = 0.0178; 
   double c2 = 1.187; 
   double c3 = 23.931;
}
else
{
   double c1 = 0.0362; 
   double c2 = 1.0937;
   double c3 = 25.7240;
}

double Rs2 = (c1 * sg * Math.Pow(p, c2)) * Math.Exp(c3 * (API / T));

C# は、コード内で定義された変数として ,c1を受け入れません。これを解決するにはどうすればよいですか?c2c3

4

2 に答える 2

11

すべての変数には定義スコープがあります。c の変数がブロック ( a{と a の間を意味する}) で定義されている場合、そのスコープに制限されます。つまり、そのスコープでのみ参照できます。したがって、最終行では 、 、 の定義範囲外とc1なり、c2参照c3できません。

ブロックの外でそれらを定義する必要があります。

double c1, c2, c3;
if(API>30)
{
   c1 = 0.0178; c2 = 1.187; c3 = 23.931;
}
else
{
   c1 = 0.0362; c2 = 1.0937; c3 = 25.7240;
}

double Rs2 = (c1 * sg * Math.Pow(p, c2)) * Math.Exp(c3 * (API / T));
于 2013-07-24T10:25:28.743 に答える
4

それらをスコープで宣言するだけです。if/else

double c1, c2, c3; 

if(API>30)
{
   c1 = 0.0178; 
   c2 = 1.187; 
   c3 = 23.931;
}
else
{
  c1 = 0.0362; 
  c2 = 1.0937; 
  c3 = 25.7240;
}
double Rs2 = (c1 * sg * Math.Pow(p, c2)) * Math.Exp(c3 * (API / T));
于 2013-07-24T10:25:40.453 に答える