我是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