0

指在这个类期间可以分配工作的类变量的构造函数。我如何在这个类中进行,我不能在构造函数中将它们分配给它们,而是在不同的方法中?

创建类:

 CreatePackWindow createPackWindow = new CreatePackWindow(ref title, ref description);
 if (createPackWindow.ShowDialog() == true)
 {
    Console.WiteLine(title, description);
 }

类 CreatePackWindow:

public partial class CreatePackWindow : Window
{
     public CreatePackWindow(ref string title, ref string description)
     {
         InitializeComponent();
     }

     private void btnCreate_Click(object sender, RoutedEventArgs e)
     {
            ???title = tbPackName.Text; **// How to assign here?**
            ???description = tbDescription.Text; **// How to assign here?**
            this.DialogResult = true;
            Close();
     }
     //..........
}

我知道您需要创建指向标题描述的指针以及使用它们的方法,但不知道该怎么做:(

请帮忙。谢谢你。

4

1 回答 1

3

您不能使用ref使字段充当指针;ref仅在通话期间有效。做你想做的事,也许:

  • 正确更新标题/描述(即 window.Title = "foo" 等)
  • 使用包装类作为中介 - 即两者都使用保留对具有标题/描述的类引用

后者可能最接近你想要的。即有一个

class Foo
{
    public string Title{get;set;}
    public string Description{get;set;}
}

public partial class CreatePackWindow : Window
{
     private readonly Foo foo;
     public CreatePackWindow(Foo foo)
     {
         InitializeComponent();
         this.Foo = foo;
     }

     private void btnCreate_Click(object sender, RoutedEventArgs e)
     {
            foo.Title = tbPackName.Text;
            foo.Description = tbDescription.Text;
            this.DialogResult = true;
            Close();

     }
}

var foo = new Foo();
CreatePackWindow createPackWindow = new CreatePackWindow(foo);
 if (createPackWindow.ShowDialog() == true)
 {
    Console.WiteLine(foo.Title, foo.Description);
 }
于 2011-03-21T07:06:15.047 回答