C#Out参数 - 使用调用方法之外的类

时间:2016-04-09 19:05:42

标签: c#-4.0 out

我试图找到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;

        }

2 个答案:

答案 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示例。