静态类C#构造函数OOP
我是OOP新手,我想我不理解静态类 我想创建一个静态类动作和一个用于更改textblock外观的静态方法 这是我的密码:静态类C#构造函数OOP,c#,oop,constructor,static-class,C#,Oop,Constructor,Static Class,我是OOP新手,我想我不理解静态类 我想创建一个静态类动作和一个用于更改textblock外观的静态方法 这是我的密码: public static class Tools { public enum StatusOption { Online, Offline, Warning } } public class Actions { private SortedDictionary<Tools.StatusO
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 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));
// ....
}
}
公共静态类操作
{
private SortedDictionary Status Colors=新的SortedDictionary();
静态动作()
{
添加(Tools.StatusOption.Online,新的SolidColorBrush(Colors.Green));
// ....
}
}
问题是,我无法在静态构造函数中访问私有成员StatusColors,也无法创建StatusColors的实例
有什么办法解决吗
谢谢 Make
StatusColors
也是静态的。之后,您应该阅读关键字。MakeStatusColors
static。之后,您应该仔细阅读关键字。您可以使用以下代码:
public enum StatusOption
{
Online,
Offline,
Warning
}
public class Actions
{
private static SortedDictionary<Tools.StatusOption,SolidColorBrush> StatusColors = new SortedDictionary<Tools.StatusOption,SolidColorBrush>();
static 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 static void SetStatus(Tools.StatusOption _statusOption, TextBlock _txtBlock)
{
_txtBlock.Text = _statusOption.ToString();
_txtBlock.Foreground = StatusColors[_statusOption];
}
}
公共枚举状态选项
{
在线 的
离线,
警告
}
公共集体诉讼
{
私有静态SortedDictionary StatusColors=新的SortedDictionary();
静态动作()
{
添加(Tools.StatusOption.Online,新的SolidColorBrush(Colors.Green));
添加(Tools.StatusOption.Offline,新的SolidColorBrush(Colors.Red));
添加(Tools.StatusOption.Warning,新的SolidColorBrush(Colors.Orange));
}
公共静态无效设置状态(Tools.StatusOption\u StatusOption,TextBlock\u txtBlock)
{
_txtBlock.Text=_statusOption.ToString();
_txtBlock.Foreground=StatusColors[_statusOption];
}
}
我还将字典设置为静态,并将枚举放在类外。您不应该像这样使用类进行嵌套,如果需要,请使用命名空间。您可以使用以下代码:
public enum StatusOption
{
Online,
Offline,
Warning
}
public class Actions
{
private static SortedDictionary<Tools.StatusOption,SolidColorBrush> StatusColors = new SortedDictionary<Tools.StatusOption,SolidColorBrush>();
static 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 static void SetStatus(Tools.StatusOption _statusOption, TextBlock _txtBlock)
{
_txtBlock.Text = _statusOption.ToString();
_txtBlock.Foreground = StatusColors[_statusOption];
}
}
公共枚举状态选项
{
在线 的
离线,
警告
}
公共集体诉讼
{
私有静态SortedDictionary StatusColors=新的SortedDictionary();
静态动作()
{
添加(Tools.StatusOption.Online,新的SolidColorBrush(Colors.Green));
添加(Tools.StatusOption.Offline,新的SolidColorBrush(Colors.Red));
添加(Tools.StatusOption.Warning,新的SolidColorBrush(Colors.Orange));
}
公共静态无效设置状态(Tools.StatusOption\u StatusOption,TextBlock\u txtBlock)
{
_txtBlock.Text=_statusOption.ToString();
_txtBlock.Foreground=StatusColors[_statusOption];
}
}
我还将字典设置为静态,并将枚举放在类外。您不应该像这样使用类进行嵌套,如果需要,可以使用名称空间。它可以完全解决问题。如果要在任何静态成员中使用非静态成员,则应声明变量this。否则,您可以将成员更改为静态成员。如果你的类是静态的,你最好把所有的成员都放到静态中,这样可以完全解决这个问题。如果要在任何静态成员中使用非静态成员,则应声明变量this。否则,您可以将成员更改为静态成员。如果你的类是静态的,你最好把所有的成员都放到静态中。