我试图找到Out参数的正好。我见过many examples,但是他们都有一个没有使用新类的方法..
调用此测试代码时出现2个错误:
The out parameter 'w' must be assigned to before control leaves the current method.
Use of unassigned out parameter 'w'.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Widget newWidget;
Widget.Create(out newWidget);
}
}
class Widget
{
private String name;
public String Name { get { return name; } set { name = value; } }
public static void Create(out Widget w)
{
w.name = "1";
}
}
这有效,但它有什么帮助?
public static void Set(out Widget w)
{
Widget x = new Widget();
x.name = "1";
w = x;
}
答案 0 :(得分:1)
此代码没有意义。 out参数通常用于值类型(基元),而不用于引用类型。
将值类型(例如int)复制到方法中,对此变量的更新不会影响原始变量。要更新原始值,您可以使用out
参数。
您可以重写代码,使其看起来像这样。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Widget newWidget = new Widget("nameOfWidget");
}
}
class Widget
{
private String name;
public String Name { get { return name; } set { name = value; } }
public Widget(string nameOfWidget)
{
name = nameOfWidget;
}
}
答案 1 :(得分:0)
您提到的example仅显示原始类型。分配基元类型可以通过以下方式完成,两者都是相同的:
Hmisc
如您所见,已创建一个新整数。在离开方法之前,您必须对Widget类执行相同的操作。 希望这有助于澄清MSDN示例。