对象引用未设置为对象的实例,该值在括号后变为null?

时间:2015-03-26 14:04:23

标签: c#

所以我已经在程序开始时将属性分配给了一个配方,但是在窗口结束之后,我不能在后面引用它,因为strawberryrecipe.type的值现在为null。 (编辑:所以我所要做的就是删除Recipe strawberryrecipe = new Recipe()中的“Recipe”;因为我已经把它作为Recipe在课程级别我猜)

public partial class Production_Optimization_Window : Window
{
    Ingredient strawberry;
    Recipe strawberryrecipe;



    public Production_Optimization_Window()
    {
        InitializeComponent();

       Recipe strawberryrecipe = new Recipe();
       strawberryrecipe.Type = "asd";
    }


    private void Button_Click(object sender, RoutedEventArgs e)
    {
      MessageBox.Show(strawberryrecipe.Type);  //Here i get the error, and blueberry recipe.type = null.
    }

2 个答案:

答案 0 :(得分:3)

你有两个范围...你想要删除本地范围,最后得到这个:

public partial class Production_Optimization_Window : Window
{
    Ingredient strawberry;
    Recipe strawberryrecipe;

    public Production_Optimization_Window()
    {
        InitializeComponent();

        // This will use the field "strawberryrecipe"
        strawberryrecipe = new Recipe();
        strawberryrecipe.Type = "asd";
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(strawberryrecipe.Type);
    }
}

另外,我已将blueberryrecipe重命名为strawberryrecipe,因为您在MessageBox之前没有对代码中的内容进行任何引用?

答案 1 :(得分:2)

您已在构造函数中将Recipe的实例分配给strawberryrecipe变量,但尝试使用未分配的blueberryrecipe变量。

所以Button_Click方法blueberryrecipenull - 这就是为什么你在尝试访问其字段时会遇到异常。

事实上,你的代码甚至不应该编译,因为代码中的任何地方都没有blueberryrecipe变量声明。