如何编写单个构造函数方法以将两个字段设置为特定值

时间:2019-04-15 07:20:27

标签: c#

我正在学习有关用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;
    }
}

我只想看一个为我的私有类字段设置默认值的构造函数的示例。任何帮助将不胜感激。

4 个答案:

答案 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提供。这是使用构造函数的一种方法。