有什么区别:
int c; int c = new int();
有时我使用第一个并且它完美地工作,但有时当我在循环中使用它时它不起作用。
这项工作:
public int[] junta(Table ent,int j)
{
int[] matriz=new int[count(ent)];
int k;
k = 0;
for (int i = fline(ent); i <= count(ent) + 1; i++)
{
if (Convert.ToString(ent.Cells[j, 3].Value) == Convert.ToString(ent.Cells[i, 3].Value))
{
matriz[k]=Convert.ToInt32(ent.Cells[i,0].Value);
k++;
}
}
}
这不起作用:
public int[] junta(Table ent,int j)
{
int[] matriz;
int k;
k = 0;
for (int i = fline(ent); i <= count(ent) + 1; i++)
{
if (Convert.ToString(ent.Cells[j, 3].Value) == Convert.ToString(ent.Cells[i, 3].Value))
{
matriz[k]=Convert.ToInt32(ent.Cells[i,0].Value);
k++;
}
}
}
答案 0 :(得分:6)
如果您将int c
声明为字段(类变量),框架会将其指定为零
如果在方法中声明int c
,则在分配之前不能使用它,因此这不起作用
public void TEST()
{
int c;
int a= c*2;
}
要使其正常工作,您必须在使用前指定它。它不必与声明的那一行在同一行。这非常好:
public void TEST(bool b)
{
int c;
if(b)
c = 2;
else
c = 4;
int a= c*2;
}
当它用作字段时,它是自动分配的,所以这没关系
class TestClass
{
int c;
public void TEST()
{
int x = c*2; // c has the value of zero.
}
}
修改强>
框架使用default(typeof(variableType))
自动分配类变量,其中variableType
是要分配的变量的类型
答案 1 :(得分:3)
int c
声明类型为int
的变量。 int c = new int()
声明类型为int
的变量,并为其赋值(0)。
在为其赋值之前,您无法读取局部变量,因此以下内容将无法编译:
int c;
int a = c;
以下内容:
int c = new int();
int a = c;
答案 2 :(得分:3)
主要区别在于:
int c;
没有为变量赋值,所以如果你之后尝试访问变量,编译器会抱怨:
使用未分配的局部变量'c'
但是如果你这样做:
int c = new int();
然后你不妨写下这个:
int c = 0;
这将为其分配一个值。
您可以测试以下两个代码段并观察它们之间的区别:
int c;
int a = c;
用这个:
int c = 0; // try = new int(); as well if you want to
int a = c;
答案 3 :(得分:0)
我认为当你在循环中使用它时,它将为你提供整个数组中的las t元素,所以你可以在循环之外声明它