我应该在哪里创建可以被其他类方法使用的对象
本文关键字:类方法 对象 其他 在哪里 创建 我应该 | 更新日期: 2023-09-27 18:07:32
我不确定在哪里创建SolidColorBrush对象。它们应该a)在公共MainWindow()初始化方法中,b)直接在MainWindow类中,还是c)在一个不同的新方法中?
在公共MainWindow()中创建了一些Ellipse对象,并且SetEllipsePosition访问它们没有问题(可能是因为Ellipses作为参数传递?)然而,在公共MainWindow()中创建的SolidColorBrush对象对SetEllipsePosition()是不可见的。
当我直接在类中创建这些对象时(在"Kinect Runtime"之后),SetEllipsePosition()会看到它们。但这种风格不好吗?
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Ellipse headEllipse = new Ellipse();
Ellipse leftEllipse = new Ellipse();
Ellipse rightEllipse = new Ellipse();
SolidColorBrush greenBrush = new SolidColorBrush(Colors.Green); // where should these
SolidColorBrush redBrush = new SolidColorBrush(Colors.Red); // objects be defined?
SolidColorBrush orangeBrush = new SolidColorBrush(Colors.Orange);
SolidColorBrush yellowBrush = new SolidColorBrush(Colors.Yellow);
}
//Kinect Runtime
Runtime nui = new Runtime();
private void SetEllipsePosition(FrameworkElement ellipse, Joint joint)
{
...
(ellipse as Ellipse).Fill = greenBrush;
MainCanvas.Background = orangeBrush;
...
}
}
你不能访问画笔的原因是因为它们是在构造器MainWindow中创建的,如果你在类本身中添加一个private SolidColorBrush greenBrush;
,然后在MainWindow()中添加一个实例,就像你现在做的那样,你将能够在SetEllipsePosition
中访问它。
在类级别声明变量并在actor中实例化始终是最佳实践。在你的例子中,SolidColorBrush对象是私有的。那有什么用呢?