我正在学习有关用c#编写构造函数和属性的知识,并被要求编写一个控制台应用程序和类来操作饮料机。我写了部分类代码,但是遇到了问题。许多代码块之一要求构造函数方法以5个瓶子开始SodaCanCount
并将CustBalance
字段设置为零。我不知道这个构造函数应该是什么样子。我是专门在两个私有字段正下方谈论private sodaVandorClass()
。
我已经写了到目前为止所能做的,并且没有错误,但是SodaVendorClass
看起来不正确。
namespace VendorClass
{
public class SodaVendorClass
{
// members
// fields
//Customer balance is $0 until the customer inserts a dollar
//All customer entries are one dollar increments and a soda costs one dollar.
private int CustBalance = 0;
//a machine holds 10 cans of soda
private int SodaCanCount = 5;
//A soda costs 1 dollar
//private int sodaCost = 1;
public int _SodaCanCount
{
get
{
return SodaCanCount;
}
}
public int _CustBalance
{
get
{
return CustBalance;
}
}
public int BuySoda(int pCustBalance, int SodaCanCount)
{
return SodaCanCount;
}
public void AcceptCash(int CustBalance)
{
CustBalance++;
}
public int GiveRefund(int pCustBalance)
{
return CustBalance;
}
}
我只想看一个为我的私有类字段设置默认值的构造函数的示例。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以定义如下的public
构造函数,但是如果您也启用属性来设置值,则可能不需要该构造子
public SodaVendorClass()
{
this.CustBalance = 0;
this.SodaCanCount = 0;
}
您也可以使属性可写。请注意,以下是自动属性,在这种情况下,您不需要显式的private
后备字段。
public int SodaCanCount
{
get; set;
}
public int CustBalance
{
get; set;
}
您可以实例化您的类型(使用 Object Initializer 构造)
SodaVendorClass sc = new SodaVendorClass
{
SodaCanCount = 10,
CustBalance = 500,
};
答案 1 :(得分:1)
此类的构造函数可能如下所示:
public SodaVendorClass () {
}
那将是一个不执行任何操作的空构造函数。
要设置所需的两个值,可以添加一些参数:
public SodaVendorClass (int customerBalance, int sodaCount) {
this.CustBalance = customerBalance;
this.SodaCanCount = sodaCount;
}
要创建一个具有5个汽水罐且客户余额为0的此类的实例,可以在代码中调用以下构造函数:
var vendor = new SodaVendorClass(0, 5);
答案 2 :(得分:1)
namespace VendorClass
{
public class SodaVendorClass
{
private int CustBalance;
private int SodaCanCount;
//...
public SodaVendorClass() // default constuctor
{
CustBalance = 0;
SodaCanCount = 5;
}
//...
}
}
在创建这样的对象时将调用默认构造函数:
SodaVendorClass obj = new SodaVendorClass();
所以obj._SodaCanCount
是5,而obj._CustBalance
是0
您也可以使用参数定义构造函数。
public SodaVendorClass(int balance, int count)
{
CustBalance = balance;
SodaCanCount = count;
}
并创建此构造函数的调用。
SodaVendorClass obj = new SodaVendorClass(0, 5);
答案 3 :(得分:1)
在创建“ Class obj = new Calss()”之类的对象时正在使用构造函数。如果您没有在类中定义构造函数,则会隐式提供默认构造函数。用户定义的构造函数通常用于初始化类属性的值。与函数构造函数不同,它根本没有任何返回类型,甚至没有void。所有的答案都很好。
public class SodaVendorClass{
private int CustBalance = 0;
//a machine holds 10 cans of soda
private int SodaCanCount = 5;
//A soda costs 1 dollar
//private int sodaCost = 1;
public int _SodaCanCount
{
get
{
return SodaCanCount;
}
}
public int _CustBalance
{
get
{
return CustBalance;
}
}
public SodaVendorClass(int cancount, int sodacost){
SodaCanCount=cancount;
sodaCost=sodacost;
}
}
//creating a object of Sodavendorclass
Sodavendorclass obj=new Sodavendorclass(0,0); //Provided value for class property
请注意,在创建对象时,已为Property提供。这是使用构造函数的一种方法。