c#带参数的构造函数是如何工作的?

c#带参数的构造函数是如何工作的?,c#,C#,我不明白施工人员是如何工作的。我试图将这些图形从类引入主程序,但是每当我尝试在主程序上使用construtor时,它就会出现“类Fooditem不包含带2个参数的构造函数”。这是非常令人困惑的,因为我有一个名为公共食品(字符串名称,int-numberserved)。我不明白为什么会出现这个消息,我不知道如何修复它。任何帮助都将不胜感激 class Program { static void Main(string[] args) {

我不明白施工人员是如何工作的。我试图将这些图形从类引入主程序,但是每当我尝试在主程序上使用construtor时,它就会出现“类Fooditem不包含带2个参数的构造函数”。这是非常令人困惑的,因为我有一个名为
公共食品(字符串名称,int-numberserved)
。我不明白为什么会出现这个消息,我不知道如何修复它。任何帮助都将不胜感激

class Program
    {
        static void Main(string[] args)
        {
            FoodItem firstfood = new FoodItem("Spagetti", 3);
            Console.WriteLine("The First Food is '{0}' And it serves {1}",   firstfood.Name, firstfood.NumberServed);
        }
    }

class FoodItem
    {
        string _name;       
        int _numberserved;

        public void food(string name)
        {
            _name = name;
            _numberserved = 0;
        }
        public void food(string name, int numberserved)
        {
            _name = name;
            NumberServed = numberserved;
        }

        public string Name
        {
            get
            {
                return _name;
            }
        }

        public int NumberServed
        {
            get
            {
                return _numberserved;
            }
            set
            {
                if (value > 4)
                {
                    _numberserved = 4;
                }
                else
                {
                    _numberserved = value;
                }
            }
        }
    }    

构造函数应具有与类相同的名称,且无返回类型:

class FoodItem
{
    string _name;       
    int _numberserved;

    public FoodItem(string name)
    {
        _name = name;
        _numberserved = 0;
    }
    public FoodItem(string name, int numberserved)
    {
        _name = name;
        NumberServed = numberserved;
    }
}

您将构造函数命名错误。将其更改为FoodItem,如下所示:

class FoodItem
{
    string _name;       
    int _numberserved;

    public FoodItem(string name)
    {
        _name = name;
        _numberserved = 0;
    }
    public FoodItem(string name, int numberserved)
    {
        _name = name;
        NumberServed = numberserved;
    }

    public string Name
    {
        get
        {
            return _name;
        }
    }

    public int NumberServed
    {
        get
        {
            return _numberserved;
        }
        set
        {
            if (value > 4)
            {
                _numberserved = 4;
            }
            else
            {
                _numberserved = value;
            }
        }
    }
}    

如果类被称为
FoodItem
,那么构造函数也应该被称为
FoodItem
,并且没有返回值:

public class FoodItem
{
    public FoodItem()
    {
        // Do stuff
    }

    public FoodItem(string name, int numberserved)
    {
        // Do stuff
    }
}
您可以使用
:this
构造将构造函数链接在一起。它可以以任何方式工作:

    public FoodItem()
    {
        // Do basic stuff
    }

    public FoodItem(string name, int numberserved) : this()
    {
        // Do other stuff
    }


您所做的完全取决于您的应用程序。

我已经修改了您的代码,现在可以使用了

class Program
    {
        static void Main(string[] args)
        {
            FoodItem firstfood = new FoodItem("Spagetti", 3);
            Console.WriteLine("The First Food is '{0}' And it serves {1}",   firstfood.Name, firstfood.NumberServed);
        }
    }

class FoodItem
    {
        string _name;       
        int _numberserved;

        public void food(string name)  
        public FoodItem()
        {
            _name = name;
            _numberserved = 0;
        }
        public void food(string name, int numberserved)
        public FoodItem(string name, int numberserved)

        {
            _name = name;
            NumberServed = numberserved;
        }

        public string Name
        {
            get
            {
                return _name;
            }
        }

        public int NumberServed
        {
            get
            {
                return _numberserved;
            }
            set
            {
                if (value > 4)
                {
                    _numberserved = 4;
                }
                else
                {
                    _numberserved = value;
                }
            }
        }
    }    
请让我知道您的想法或反馈

谢谢
karthik

你的类名是什么?构造函数的名称应该与类名相同,你的类中没有任何构造函数。你的构造函数需要与类同名。你没有
公共食品(字符串名称,int-numberserved)
。如果你有,你会得到一个语法错误。
class Program
    {
        static void Main(string[] args)
        {
            FoodItem firstfood = new FoodItem("Spagetti", 3);
            Console.WriteLine("The First Food is '{0}' And it serves {1}",   firstfood.Name, firstfood.NumberServed);
        }
    }

class FoodItem
    {
        string _name;       
        int _numberserved;

        public void food(string name)  
        public FoodItem()
        {
            _name = name;
            _numberserved = 0;
        }
        public void food(string name, int numberserved)
        public FoodItem(string name, int numberserved)

        {
            _name = name;
            NumberServed = numberserved;
        }

        public string Name
        {
            get
            {
                return _name;
            }
        }

        public int NumberServed
        {
            get
            {
                return _numberserved;
            }
            set
            {
                if (value > 4)
                {
                    _numberserved = 4;
                }
                else
                {
                    _numberserved = value;
                }
            }
        }
    }