rk
的赋值语句无法从“if-else”语句访问变量xnbb
。我怎样才能看到它?我是否必须使用“返回”创建一些新方法?
var length = Math.Min(xr_arr.Count(), 24);
for (int y = 0; y < 24; y++)
{
if (xr_arr[y] > Math.Exp(Math.Log(2) * (-y)))
{
var xn = xr_arr[y] - Math.Exp(Math.Log(2) * (-y));
int xnbb = 1;
}
else
{
int xnbb = 0;
}
var rk = xnbb + 1 * Math.Round(Math.Exp(Math.Log(2) * (24 - y)));
}
答案 0 :(得分:3)
我是否必须使用&#34; return&#34;?
创建一些新方法
不,您只需要在if-else
子句之外声明它:
int xnbb = 0;
if (xr_arr[y] > Math.Exp(Math.Log(2) * (-y)))
{
var xn = xr_arr[y] - Math.Exp(Math.Log(2) * (-y));
xnbb = 1;
}
else
{
xnbb = 0;
}
有两点需要注意:
由于xnbb
默认为0
,您可以完全删除else
条款:
int xnbb = 0;
if (xr_arr[y] > Math.Exp(Math.Log(2) * (-y)))
{
var xn = xr_arr[y] - Math.Exp(Math.Log(2) * (-y));
xnbb = 1;
}
答案 1 :(得分:1)
按照以下方式重新排序:
int xnbb;
if (xr_arr[y] > Math.Exp(Math.Log(2) * (-y)))
{
var xn = xr_arr[y] - Math.Exp(Math.Log(2) * (-y));
xnbb = 1;
}
else
{
xnbb = 0;
}
var rk = xnbb + ...
您必须在包含此变量的所有用法的范围中声明变量xnbb
。在这种情况下,它位于for
循环内。
答案 2 :(得分:0)
块内声明的变量仅在该块内可用。您可以在MSDN documentation上找到有关变量范围的更多详细信息。
因此,为了使您的变量在多个范围内可用,您需要在作为讨论中两个范围的祖先的范围中声明该变量。
在您的情况下,您可以在xnbb
语句之前声明if
变量,因为在您的情况下for
范围包含if
语句,因此这是我上面说的是祖先:
int xnbb = 0;
if (xr_arr[y] > Math.Exp(Math.Log(2) * (-y)))
{
var xn = xr_arr[y] - Math.Exp(Math.Log(2) * (-y));
int xnbb = 1;
}
else
{
xnbb = 0;
}