如果已经有一个具有相同名称的局部变量,如何在函数内部使用全局变量

时间:2017-07-12 09:41:55

标签: c# .net c#-4.0

  • 想要从函数内部调用全局变量,而不是已经存在同名的局部变量;
  • 我试过这个。
using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Globalization;
    namespace tesitingInMyKitchen
    {
        class program
        {
           static string cheese = "chedar";

            static void Main()
            {
                string cheese = "swiss";
                //printing local cheese
                Console.WriteLine(cheese);
                //here want to print global cheese 
                Console.WriteLine(global :cheese);
            }
        }
    }

2 个答案:

答案 0 :(得分:6)

你的"全局变量"

static string cheese = "chedar";

不是全局变量,而是类program的静态属性。因此,您可以通过以下方式访问它:

Console.WriteLine(program.cheese);

请注意,由于您尚未在静态属性上明确定义访问修饰符(publicprotectedinternalprivate),因此请访问默认情况下,限制为属性定义的类的成员(隐式private声明),而类program本身默认为internal。因此,此属性cheese可用于您的类program中的所有方法,但它不适用于任何其他类的任何成员,包括从program继承的类。

答案 1 :(得分:1)

对于静态字段,请使用 ClassName.FieldName ,如果它是非静态的,则可以使用“this”关键字: this.FieldName

class MyClass
{       
    static string cheese = "chedar";
    string cheese1 = "global";

    void Main()
    {
        string cheese = "swiss";
        string cheese1 = "local";

        Console.WriteLine(cheese);
        Console.WriteLine(MyClass.cheese);

        Console.WriteLine(cheese1);
        Console.WriteLine(this.cheese1);
    }
}