Где я должен создавать объекты, которые могут использоваться другими методами класса? - PullRequest
1 голос
/ 03 сентября 2011

Я не уверен, где создавать объекты SolidColorBrush. Должны ли они идти а) внутри общедоступного метода инициализации MainWindow (), б) непосредственно в классе MainWindow или в) другим новым методом?

Несколько объектов Ellipse создаются в общедоступной MainWindow (), и SetEllipsePosition не имеет проблем с доступом к ним (может быть, потому, что Ellipses передаются как аргумент?). Однако объекты SolidColorBrush, созданные в общедоступной функции MainWindow (), не отображаются в 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;
      ... 
      }
 }

Ответы [ 2 ]

0 голосов
/ 03 сентября 2011

Лучше всего всегда использовать переменную delcare на уровне класса и создавать ее экземпляр в ctor. В вашем случае объекты SolidColorBrush являются частными для ctor. Так что толку, приятель?

0 голосов
/ 03 сентября 2011

Причина, по которой вы не можете получить доступ к кистям, заключается в том, что они создаются в конструкторе MainWindow, если вы добавляете private SolidColorBrush greenBrush; в самом классе, а затем в MainWindow () добавляете экземпляр, как вы делаете сейчас Вы сможете получить к нему доступ в SetEllipsePosition.

...