Declaración y alcance de C # | C # variable (variable local)

Las variables globales a menudo se declaran en la función Main y su alcance es el código completo; las variables locales existen en el alcance antes de la llave de cierre ({}) al final de la declaración de bloque o método en el que se declara la variable. Este artículo toma prestadas varias demostraciones para mostrar algunas declaraciones de variables y relaciones de alcance en C #.
Caso 1: la variable contiene ambiguos

De acuerdo con el principio del alcance de la variable (las variables locales existen en el alcance antes de la llave de cierre ({}) de la declaración de bloque o método que declara la variable), la primera variable j se define antes del inicio del ciclo for. Su alcance es el método Main (); el alcance de la segunda variable está en el ciclo for; el alcance de la primera variable j incluye el alcance de la segunda j. Habrá ambigüedad para el compilador, porque el compilador no puede distinguir entre estas dos variables, por lo que no está permitido declarar la segunda variable.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200226bianliang
{
    
    
    class Program
    {
    
    
        static void Main(string[] args)
        {
    
    
            int j = 20;//在Main中定义j为全局变量
            for(int i=0; i<10; i++)
            {
    
    
                int j = 30;//在for循环中定义j为局部变量,但两者同为Main中,产生了包含与被包含的关系,顾报错。
                Console.WriteLine(j);
            }
        }
    }
}
Caso 2: las variables se actualizan a "variables de nivel de clase"

C # tiene una distinción básica entre variables.Las variables declaradas a nivel de clase se consideran campos (variables miembro) y las variables declaradas en métodos se consideran variables locales.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200226bianliang
{
    
    
    class Program
    {
    
    
        public int j = 20;//在Main外声明了一个类级变量
        static void Main(string[] args)
        {
    
    
            int j = 30;//在Main函数中定义了一个Main中的变量
            Console.WriteLine(j);//执行主函数Main,打印Main中的j
            return;
        }
    }
}
Situación 3: variables de nivel de clase de referencia en la función principal

Para el caso dos, antes de que la primera j se defina en la función Main a través de public, se "actualiza" a una variable de nivel de clase (esta vez pertenece a una variable local), y la aplicación de variables de nivel de clase se puede realizar mediante el siguiente método.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200226bianliang
{
    
    
    class Program
    {
    
    
        public int j = 20;
        static void Main(string[] args)
        {
    
    
            int j = 30;
            Console.WriteLine(j);
            Program obj = new Program();//new创建对象
            Console.WriteLine("类级变量是:" + obj.j);//调用方法,引用类级变量j
            return;
        }
    }
}
Situación 4: la declaración estática introduce variables de nivel de clase

Si elige declarar el campo como estático, puede introducir directamente variables de nivel de clase al llamar.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _20200226bianliang
{
    
    
    class Program
    {
    
    
        static int j = 20;//static声明
        static void Main(string[] args)
        {
    
    
            int j = 30;
            Console.WriteLine(j);
            //Program obj = new Program();
            Console.WriteLine("类级变量是:" + Program.j);//可直接调用
            return;
        }
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_44421798/article/details/104524676
Recomendado
Clasificación