我无法弄清楚如何使用简写语法而不会有不匹配的变量或完全不同的名称。
字段和属性之间存在歧义,但如果我将它们命名为不同,我就无法使用速记获取;组;句法。我该如何解决这个问题?
/// <summary>
/// A customer object
/// </summary>
public class Customer
{
// These are fields
private string name;
private string address;
private string city;
private string province;
private string postalCode;
private string phoneNumber;
private string emailAddress;
// These are properties
public string name { get; set; }
public string address { get; set; }
public string city { get; set; }
public string province { get; set; }
public string postalCode { get; set; }
public string phoneNumber { get; set; }
public string emailAddress { get; set; }
// This is a constructor
public Customer(string Name, string Address, string City, string Province, string PostalCode, string PhoneNumber, string EmailAddress)
{
name = Name; // Cannot determine if name is field or property
address = Address; // Cannot determine if address is field or property
city = City; // Cannot determine if city is field or property
province = Province; // Cannot determine if province is field or property
postalCode = PostalCode; // Cannot determine if postalCode is field or property
phoneNumber = PhoneNumber; // Cannot determine if phoneNumber is field or property
emailAddress = EmailAddress; // Cannot determine if emailAddress is field or property
}
}
答案 0 :(得分:3)
声明自动实现的属性时:
public string Name { get; set; }
创建支持字段不一定。编译器代表您为该属性创建一个隐藏(不可访问)的支持字段,只能 通过该属性get
和{{ 1}}访问者。你不必考虑它。
因此,从上面的代码中,只需删除由自动实现的属性复制的字段。
答案 1 :(得分:1)
声明自动属性时,编译器会为您生成支持字段。
即。当你宣布
时public string Name {get;组; }
编译器会有像
这样的代码private string name; //Your backing Field.you don't need it manually.
public string Name
{
get
{
return this.name;
}
set
{
this.name = value;
}
}