有关在方法内部修改外部变量的C#新手问题

时间:2019-11-28 13:20:47

标签: c# variables methods

在以下示例中,我想知道一种使顶部示例功能像顶部示例一样的好方法。我知道范围是最下面的示例不起作用的原因。

我对此感兴趣,因此我可以整理程序的主体并消除一些重复的代码。

namespace example_1
{
    class Program
    {
        static void Main(string[] args)
        {
            int test = 5;
            bool trigger = true;
            if (trigger)
            {
                test++;
                trigger = false;
            }
        }
    }
}
namespace example_2
{
    class Program
    {
        static void Main(string[] args)
        {
            int test = 5;
            bool trigger = true;
            if (trigger)
            {
                mod_test();
            }
        }
        public static void mod_test()
        {
            test++;
            trigger = false;
        }
    }

2 个答案:

答案 0 :(得分:4)

您可以在方法之外声明属性,但仍可以在类中声明:

class Program
{
    // both of them are accessible within the class scope, but not outside
    static int test = 5;
    static bool trigger = true;

    static void Main(string[] args)
    {
        if (trigger)
        {
            mod_test();
        }
    }

    public static void mod_test()
    {
        test++;
        trigger = false;
    }
}

答案 1 :(得分:0)

我认为在这种情况下使用数据容器对象更合适。例如,在下面的示例中,我将intbool变量包装到TestData类中。这样,您就不必使用全局变量,而仍然可以通过对象引用进行任何类型的操作。

namespace example_3
{
    class TestData
    {
        public bool Trigger { get; set; }
        public int Test { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            var testData = new TestData
            {
                Test = 5,
                Trigger = true
            };

            if (testData.Trigger)
            {
                mod_test(testData);
            }
        }

        public static void mod_test(TestData data)
        {
            data.Test++;
            data.Trigger = false;
        }
    }
}