【发布时间】:2014-11-03 02:08:16
【问题描述】:
我创建了一个包含私有静态成员的静态类。我的所有静态类方法都可以访问该私有静态成员。
这发生在我没有真正注意的时候,但后来我意识到我做了什么,而且——有趣的是——它似乎在我的应用程序中运行良好。尽管如此,这似乎是一件愚蠢的事情(来自 C++),所以我一直在寻找更多关于这是否真的应该可行和/或它是否被认为是好的或坏的做法的信息,但我还没有真正找到任何关于在 C# 中的静态类中创建私有静态成员的信息。
似乎我的静态类中的静态方法有一个隐式的“this”变量(因为我也可以调用其他方法而无需使用类名完全限定它们),这对我来说很奇怪。
我希望你们中的一些人可能对这是否是一个好主意以及为什么 C# 使这成为可能有一些想法。
班级:
public static class ControlHighlighter
{
private static Panel highlightPanel = null;
public static void Highlight(Control control = null, int thickness = 1)
{
RemoveHighlight();
if (control != null)
{
if (control.Parent != null)
{
highlightPanel = new Panel();
control.Parent.Controls.Add(highlightPanel);
highlightPanel.Location = new Point(control.Location.X - thickness,
control.Location.Y - thickness);
highlightPanel.Size = new Size(control.Size.Width + (2 * thickness),
control.Size.Height + (2 * thickness));
highlightPanel.SendToBack();
highlightPanel.BackColor = SystemColors.Highlight;
}
}
}
public static void RemoveHighlight()
{
if (highlightPanel != null)
{
highlightPanel.Dispose();
highlightPanel = null;
}
}
}
【问题讨论】:
-
那么为什么你认为不可能做到这一点?
-
这个问题似乎跑题了,因为它是关于代码审查的,属于codereview.stackexchange.com
-
不太确定是否需要存储对此面板的引用,因为它将位于对象的控制列表中,因此只需找到它即可。考虑使用扩展而不是使用私有静态成员。