首页 文章

c# - 无法隐式转换类型void [关闭]

提问于
浏览
-1

我有以下形式,它给了我错误,我不能隐式地将类型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 回答

  • 2

    你为什么这么做:

    CreateInventory creating = invtryMngr.Create(create);

    为什么不呢:

    invtryMngr.Create(create);

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

  • 0

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

  • 1

    给你错误的一行是:

    CreateInventory creating = invtryMngr.Create(create);
    

    事实上,我认为 invtryMngr.Create(create) 没有返回任何东西 .

  • 0

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

    Create 方法可能具有void返回类型

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

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

    invtryMngr.Create(create);
    

    或将方法更改为

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

相关问题