很抱歉,如果这是一个非常愚蠢的问题,但是我在弄乱和摆弄我从YouTube初学者教程中学到的东西,我有点迷失了。谁能告诉我为什么在public
破坏所有内容之前使用fields
访问说明符?
namespace ConsoleApp1
{
class Methods
{
static void Main(string[] args)
{
public int _first, _second, _third, _fourth, _fifth;
for (int i=1;i<=5;i++)
{
Console.WriteLine("Enter {0}st number:", i);
Console.ReadLine();
switch (i)
{
case 1:
_first = i;
break;
}
}
}
答案 0 :(得分:0)
问题是范围。
函数范围内的字段(最好在函数或方法内部使用变量)不能是“公共的”或“受保护的”或...不,不是容器范围的私有的,当然,不是不需要访问词。
如果您在函数之外创建字段,则可以将其设为公共,私有,内部...等...
您不能使用对象或结构来制作字段。
namespace ConsoleApp1
{
public int _secondThing // baaaad
class Methods
{
public static int _thing; //good
int _thing; //good, it's private;
private int _thing; //good, it's the same
public int _firstThing; //good
static void Main(string[] args)
{
public int _first, _second, _third, _fourth, _fifth; //baaad
int _first, _second; //good
}
}
}
答案 1 :(得分:0)
正如DrkDeveloper所提到的,这是变量范围的问题。根据定义变量的位置,它仅存在于该特定范围及其所有子范围内,而不存在于父范围内。因此,在类级别定义somethin使其可以在整个类中访问,这在其所有成员中都是如此。另一方面,在成员(例如方法)中定义变量会使该变量仅存在于该方法的特定范围内。您无法从其范围之外的任何地方访问它。
没有访问修饰符的第一个代码可以工作,因为变量是在该方法中定义的-我们将其称为局部变量。第二个带有访问修饰符的代码会将这些变量转换为 class 的成员(在这种情况下为字段)。因此,您应该在应该具有类范围的方法中定义一个成员。这当然是行不通的。
因此,您可以将变量保留为局部变量,或者在班级内public static
。
namespace ConsoleApp1
{
class Methods
{
public int _first, _second, _third, _fourth, _fifth;
static void Main(string[] args)
{
for (int i=1;i<=5;i++)
{
Console.WriteLine("Enter {0}st number:", i);
Console.ReadLine();
switch (i)
{
case 1:
_first = i;
break;
}
}
}
}
}