c# - 不能隐式转换类型void

时间:2012-10-01 20:00:51

标签: c#

我有以下表单,它给出了错误,我不能隐式地将类型void转换为HomeInventory2.Domain.CreateInventory ...

我的表格

namespace HomeInventory2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void label1_Click(object sender, EventArgs e)
        {
        }

        private void submitButton_Click(object sender, EventArgs e)
        {
            CreateInventory create = new CreateInventory();
            create.ItemAmount = textBoxAmount.Text;
            create.ItemCategory = textBoxCategories.Text;
            create.ItemProperties = textBoxValue.Text;
            create.ItemValue = textBoxValue.Text;

            InventoryMngr invtryMngr = new InventoryMngr();
            CreateInventory creating = invtryMngr.Create(create);
        }
    }
}

以及它正在引用的createinventory文件

namespace HomeInventory2.Domain
{
    [Serializable]
    public class CreateInventory
    {
        private string itemCategory;
        public String ItemCategory
        {
            set { itemCategory = value; }
            get { return itemCategory; }
        }

        private string itemProperties;
        public String ItemProperties
        {
            set { itemProperties = value; }
            get { return itemProperties; }
        }

        private string itemAmount;
        public String ItemAmount
        {
            set { itemAmount = value; }
            get { return itemAmount; }
        }

        private string itemValue;
        public String ItemValue
        {
            set { itemValue = value; }
            get { return itemValue; }
        }
    }
}

4 个答案:

答案 0 :(得分:2)

你为什么这样做:

CreateInventory creating = invtryMngr.Create(create);

为什么不呢:

invtryMngr.Create(create);

因为您正在创建另一个CreateInventory,根据您发布的代码判断,不需要在那里。这就是给你错误的原因,因为invtryMngr.Create()很可能会返回void。

答案 1 :(得分:1)

看起来你在invtryMngr.Create(create);中调用了一个void方法,所以编译器告诉你,由于该方法没有返回任何内容,你不能将它分配给creating变量。

答案 2 :(得分:0)

给出错误的行是:

CreateInventory creating = invtryMngr.Create(create);

事实上,我认为invtryMngr.Create(create)没有返回任何内容。

答案 3 :(得分:0)

正如其他人已经指出的那样,行invtryMngr.Create(create);可能会导致问题。

Create方法可能有一个void返回类型

public void Create(CreateInventory create)
{
    ...
}

要么在没有分配的情况下这样称呼它

invtryMngr.Create(create);

或将方法更改为

public CreateInventory Create(CreateInventory create)
{
    ...
    return createdInventory;
}