如何使其他类可以访问此var?

问题描述

因此,我正在基于SadConsole库制作一个简单的游戏,并且存在一个var,当另一个调用函数时,该位置我想重置该位置。但是我无法访问它。有什么解决办法吗?

using System;
using System.Collections.Generic;
using System.Text;
using SadConsole.Components;
using SadConsole;
using SadConsole.Themes;
using SadConsole.Controls;
using Console = SadConsole.Console;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace SAD
{
    class MainConsole: Console
    {
        
        public MainConsole() : base(80,25)
        {
            Random random = new Random();

            var console = new Console(80,25);
            var Control = new ControlsConsole(80,25);
            Children.Add(Control);
            console.IsVisible = true;
            var button = new SadConsole.Controls.Button(10,5) // THIS VAR. I WANT ITS POSITION TO BE RESET BUT I CAN ACCESS IT
            {
                Text = "Press",Position = new Point(5,5),Theme = new ButtonLinesTheme()
            };
            button.Click += (s,a) => button.Position = new Point(random.Next(1,81),random.Next(1,26));
            Control.Add(button);

           
        }
    }
}

解决方法

与其在构造函​​数中声明变量,不如将其设置为public -这将使其在程序集之外也可用–或internal -将使其对所有人都可用同一程序集中的所有类-属性。

using foo;
...

namespace SAD {

    class MainConsole: Console
    {

        public SadConsole.Controls.Button TheButton {get; private set;}
        public MainConsole() : base(80,25) {
           ...
           TheButton = new SadConsole.Controls.Button(10,5) {...}
        }
    }
}

private设置器确保只能从TheButton类中设置MainConsole,但是getter为public,因此一旦设置了属性,您就可以可以从代码中具有TheButton类实例的任何其他位置访问MainConsole