Déclaration et portée de la variable C # | C # (variable locale)

Les variables globales sont souvent déclarées dans la fonction Main, et leur portée est le code entier; les variables locales existent dans la portée avant l'accolade fermante ({}) à la fin de l'instruction de bloc ou de la méthode dans laquelle la variable est déclarée. Cet article emprunte plusieurs démos pour montrer certaines déclarations de variables et relations d'étendue en C #.
Cas 1: la variable contient une ambiguïté

Selon le principe de la portée de variable (des variables locales existent dans la portée avant l'accolade fermante ({}) de l'instruction de bloc ou de la méthode qui déclare la variable), la première variable j est définie avant le début de la boucle for. scope est la méthode Main (); la portée de la deuxième variable est dans la boucle for; la portée de la première variable j inclut la portée de la seconde j. Il y aura ambiguïté pour le compilateur, car le compilateur ne peut pas faire la distinction entre ces deux variables, il n'est donc pas autorisé à déclarer la deuxième 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);
            }
        }
    }
}
Cas 2: les variables sont mises à niveau en "variables de niveau classe"

C # a une distinction fondamentale entre les variables: les variables déclarées au niveau de la classe sont considérées comme des champs (variables membres) et les variables déclarées dans les méthodes sont considérées comme des 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;
        }
    }
}
Situation 3: Variables de niveau classe de référence dans la fonction principale

Pour le deuxième cas, avant que le premier j ne soit défini dans la fonction Main via public, il est "mis à niveau" vers une variable de niveau classe (cette fois appartient à une variable locale), et l'application de variables de niveau classe peut être réalisée par la méthode suivante.

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;
        }
    }
}
Situation 4: la déclaration statique introduit des variables au niveau de la classe

Si vous choisissez de déclarer le champ comme statique, vous pouvez directement introduire des variables de niveau classe lors de l'appel.

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

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44421798/article/details/104524676
conseillé
Classement