我应该在哪里创建可以被其他类方法使用的对象

本文关键字:类方法 对象 其他 在哪里 创建 我应该 | 更新日期: 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对象是私有的。那有什么用呢?