我是OOP的新手,我想我不懂静态类。静态类C#构造函数OOP
我想创建一个静态类行动和改变文本块外观一个静态方法..
这里是我的代码:
public static class Tools
{
public enum StatusOption
{
Online,
Offline,
Warning
}
}
public class Actions
{
private SortedDictionary<Tools.StatusOption,SolidColorBrush> StatusColors = new SortedDictionary<Tools.StatusOption,SolidColorBrush>();
public Actions()
{
StatusColors.Add(Tools.StatusOption.Online, new SolidColorBrush(Colors.Green));
StatusColors.Add(Tools.StatusOption.Offline, new SolidColorBrush(Colors.Red));
StatusColors.Add(Tools.StatusOption.Warning, new SolidColorBrush(Colors.Orange));
}
public void SetStatus(Tools.StatusOption _statusOption, TextBlock _txtBlock)
{
_txtBlock.Text = _statusOption.ToString();
_txtBlock.Foreground = StatusColors[_statusOption];
}
}
它的工作原理,但我要创建的几个实例,我这是恕我直言,没用。
private void Close_Click(object sender, RoutedEventArgs e)
{
Actions a1 = new Actions();
a1.SetStatus(Tools.StatusOption.Offline, StatusTextBlock);
}
private void Open_Click(object sender, RoutedEventArgs e)
{
Actions a2 = new Actions();
a2.SetStatus(Tools.StatusOption.Online, StatusTextBlock);
}
我宁愿它就像这样:
private void Open_Click(object sender, RoutedEventArgs e)
{
Actions.SetStatus(Tools.StatusOption.Online, StatusTextBlock);
}
我知道,我必须定义一个静态类和静态构造函数:
public static class Actions
{
private SortedDictionary<Tools.StatusOption,SolidColorBrush> StatusColors = new SortedDictionary<Tools.StatusOption,SolidColorBrush>();
static Actions()
{
StatusColors.Add(Tools.StatusOption.Online, new SolidColorBrush(Colors.Green));
// ....
}
}
的问题是,我不能访问静态构造函数中的私有成员StatusColors,并且我无法创建StatusColors的实例。
任何想法如何解决它?
谢谢。
它可以完全解决问题。如果你想在任何静态成员中使用非静态成员,你应该声明一个变量'this'。否则,您可以将该成员更改为静态成员。如果你的类是静态的,你最好把所有的成员变成静态的。 – 2012-04-01 01:46:42