声明具有类似签名和参数的方法

时间:2015-11-19 22:47:37

标签: c# methods overloading

所以基本上我被要求制作一个代码但是标题说我在使用相同的签名添加多个字符串方法时遇到了麻烦。我必须创建一个类,其中包含客户名称,客户代码等信息,例如AB001,地址和电话号码将被存储。所以在其他方面我必须使用字符串。我的问题是:有没有其他方法来编码或者可能是解决问题的方法?

这就是代码的样子:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace myapp2
{
    internal class Customer
    {
        private string name;
        private string address;
        private string customerCode;
        private string phoneNumber;

        public Customer(string nameofacc)
        {
            name = nameofacc;
        }

        public string getName()
        {
            return name;
        }

        public void setName(string nameofacc)
        {
            name = nameofacc;
        }

        public Customer(string code)
        {
            customerCode = code;
        }

        public string getCustomerCode()
        {
            return customerCode;
        }

        public void setCustomerCode(string code)
        {
            customerCode = code;
        }
        public Customer(string customeraddress)
        {
            address = customeraddress;
        }

        public string getAddress()
        {
            return address;
        }

        public void setAddress(string customeraddress)
        {
            address = customeraddress;
        }
        public Customer(string number)
        {
            phoneNumber = number;
        }

        public string getPhoneNumber()
        {
            return phoneNumber;
        }

        public void setPhoneNumber(string number)
        {
            phoneNumber = number;
        }
    }
}

这些是我得到的错误:

  

错误1:输入' myapp2.Customer'已经定义了一个名为' Customer'使用相同的参数类型

     

错误2:输入' myapp2.Customer'已定义一个名为的成员   '客户'使用相同的参数类型

     

错误3:输入' myapp2.Customer'已定义一个名为的成员   '客户'使用相同的参数类型

我对使用C#不是很有经验,所以如果有人可以提供帮助,请做!

2 个答案:

答案 0 :(得分:3)

使用properties

  

属性是一个成员,它提供了一种灵活的机制来读取,写入或计算私有字段的值。

private string address;

public string Address
{
     get { return address; }
     set { address = value; }
}

Auto-Implemented Properties

public string Address { get; set; }

答案 1 :(得分:0)

您应该使用1个构造函数,并使用默认值手动玷污您在构造函数中传递的名称的参数:

public Customer(string nameofacc = null, string customerAddress = null, string number = null, string code = null)
        {
            name = nameofacc;
            address = customerAddress;
            customerCode = code;
            phoneNumber = number;
        }

您可以在以后的代码中使用它在任何参数组合中:

var customer = new Customer(number: "12345");
var anotherCustomer = new Customer(code: "123", customerAddress:"Stub Address");

另外,对于get / set方法,请考虑使用属性而不是方法对:https://msdn.microsoft.com/en-us/library/x9fsa0sw.aspx

在这种情况下,您将能够创建如下类:

var customer = new Customer {
      NameOfAcc = "John Doe",
      Phone = "123 456 7890"
};