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, c2,c3在我的代码中定义为 vars,我该如何解决这个问题?

4

2 回答 2

11

每个变量都有它的定义范围。当 c 中的变量在块中定义时(意味着 a{和 a之间}),它被限制在该范围内,这意味着它只能在该范围内被引用。因此,在最后一行中,您超出了 , 的定义范围,c1并且无法引用它们。c2c3

您需要在块外定义它们:

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 回答