[英]How to avoid repeating typing the same name multiple times within the same scope?
[英]Is possible to declare multiple times same name variable in c# within Ne-stead/same Scope?
namespace project1
{
public class testclass
{
int i = 0;
public int foobar()
{
int i = 1;
return i;
}
}
}
结果:
1个
我声明两次i
变量。 为什么C#编译器允许我这样做?
如果我尝试在同一作用域中声明,那么编译器将给我例外,那么为什么允许在嵌套作用域中使用呢?
这不是错误
您可以随时使用this.i
来访问类声明中的int i
字段,因此不会出现重叠。 实际上,这实际上是在camelCase的方法内写入(专用)字段名称,参数和局部变量的约定。 另一方面,属性,方法名,类名等用PascalCase编写。
因此,在班级中,如果您想访问班级的字段i
,可以通过编写this.i
。 否则,只要您在if
-block内,就可以访问范围指定的变量i
。
namespace Project1 // PascalCase here for namespace name
{
public class TestClass // Again PascalCase for class name.
{
int i = 0; // camelCase correct here for field name.
public void Foobar() // PascalCase for method name.
{
if (0 == 0)
{
int i = 0; // camelCase correct here for local variable name.
// Cannot be re-declared until your if-block is finished.
// accessing both elements named 'i'
this.i = i;
}
return;
}
}
}
请参阅Microsoft文档以获取更多参考。
在特定范围内声明的所有变量必须唯一。
您可以根据变量的数据类型来重用某些变量,但是是否应该重用变量取决于您的工作。
您的代码可以工作,但是您第二次声明i
是不正确的,因为它已经存在且值为0。
您需要更改其值,而不是尝试重新创建变量:
namespace project1
{
public class testclass
{
int i = 0;
public void foobar()
{
if (0 == 0)
{
i = 0;
}
return;
}
}
}
您还可以创建一个新变量:
namespace project1
{
public class testclass
{
int i = 0;
public void foobar()
{
if (0 == 0)
{
int j = 0;
}
return;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.