2011-03-21 4 views
0

이 클래스에서 작동하도록 할당 할 수있는 클래스 변수의 생성자를 나타냅니다. 이 클래스에서 어떻게 만들 수 있습니까? 생성자에서 할당 할 수는 없지만 다른 방법으로 할당 할 수 있습니까?클래스 메서드 내에서 creating-ref-arguments를 변경하는 방법은 무엇입니까?

만들기 클래스 :

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(); 
    } 
    //.......... 
} 

당신이 그들과 함께 작업 할 제목설명 및 방법에 대한 포인터를 만들 필요가 있음을 이해하지만, 할 그것을하는 방법을 모른다 : (

도와주세요. 감사합니다.

답변

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); 
} 
관련 문제