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 に答える