问题描述
因此,我正在基于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
。