C# can';不要使用公共访问修饰符

C# can';不要使用公共访问修饰符,c#,syntax-error,C#,Syntax Error,很抱歉,如果这是一个非常愚蠢的问题,但我在胡闹,摆弄我从YouTube初学者教程中学到的东西,我有点迷路了。有人能告诉我为什么在字段中断所有内容之前使用公共访问说明符吗 namespace ConsoleApp1 { class Methods { static void Main(string[] args) { public int _first, _second, _third, _fourth, _fifth;

很抱歉,如果这是一个非常愚蠢的问题,但我在胡闹,摆弄我从YouTube初学者教程中学到的东西,我有点迷路了。有人能告诉我为什么在
字段
中断所有内容之前使用
公共
访问说明符吗

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;
                }
            }

        }

名称空间控制台EAPP1
{
类方法
{
静态void Main(字符串[]参数)
{
公共国际第一、第二、第三、第四、第五;

对于(inti=1;i而言,问题在于范围

函数作用域中的字段(函数或方法内部最好使用变量)不能是“public”或“protected”或…不,是容器作用域的私有字段,当然,不需要access word

如果你在函数外创建一个字段,你可以将其设置为公共、私有、内部……等等

不能用对象或结构生成字段

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
        }
    }
}

正如DrkDeveloper提到的,这是一个变量范围的问题。根据定义变量的位置,变量只存在于该特定范围及其所有子范围内,而不存在于父范围内。因此,在类级别定义somethin可使其在整个类中可访问,这是在其所有成员中n另一方面,成员(如方法)使该变量仅存在于该特定范围内-在该方法中。您不能从其范围外的任何地方访问它

没有访问修饰符的第一个代码可以工作,因为变量是在该方法中定义的-我们称它们为局部变量。带有访问修饰符的第二个代码将这些变量转换为成员(本例中为字段)所以你应该在一个应该有类作用域的方法中定义一个成员。这当然不起作用

因此,您要么将变量保留为本地变量,要么将它们设置为类中的公共静态变量

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;
                }
            }
        }
    }
}
名称空间控制台EAPP1
{
类方法
{
公共国际第一、第二、第三、第四、第五;
静态void Main(字符串[]参数)
{

对于(int i=1;i因为你不能在一个方法中声明一个字段。如果没有访问修饰符,它不是一个字段,而是一个局部变量。如果你应用任何其他访问修饰符,例如
private
,也会发生同样的情况。如果你需要将变量声明为公共的,你需要在函数之外声明它。在你的情况下,它将在主函数之外感谢您的响应,我第一次这样做了,我在方法外部初始化了字段,但之后我无法将它们用作主方法的switch case语句中的变量。[链接]@ALapper你如何假装在静态方法中使用非静态字段?你必须使字段成为静态。
\u thing
也很糟糕,因为你不能在名称空间中声明成员。你的编辑是毫无意义的。@HimBromBeere抱歉,编辑不好,StackOverflow,改进你的编辑器!!!!!