已经包含了一个定义

我有一个名为Assign and的类

  private int SeatNumber; public Assign(int SeatNum) { SeatNumber = SeatNum; } public int SeatNumber { get { return SeatNumber; } set { SeatNumber = value; } } 

我不知道为什么我收到以下错误

类型’WindowsFormsApplication1.Assign’已包含’SeatNumber’的定义

怎么了?

你在这里两次声明相同的变量。

 private int SeatNumber; public int SeatNumber { get { return SeatNumber; } set { SeatNumber = value; } } 

该代码定义了两次相同的变量。 如果您使用的是.net 3.0+,则可以执行此类自动实现的属性,而不使用private int SeatNumber

 public int SeatNumber { get; set; } 

否则,你应该这样做:

 private int SeatNumber_; public int SeatNumber { get { return SeatNumber_; } set { SeatNumber_ = value; } } 

您应该确保支持该属性的变量具有不同的名称。 通常使用camelCase:

 private int seatNumber; public Assign(int SeatNum) { SeatNumber = SeatNum; } public int SeatNumber { get { return seatNumber; } set { seatNumber = value; } } 

此外,在getter ans setter很简单的情况下,从C#3.0开始,您可以使用自动属性 ,如下所示:

 public int SeatNumber {get; set;} 

这允许您删除支持变量:编译器将为您处理它。

私有变量和公共变量不能具有相同的名称,即冲突的来源。 做这个:

 private int _seatNumber; public Assign(int SeatNum) { SeatNumber = SeatNum; } public int SeatNumber { get { return _seatNumber; } set { _seatNumber = value; } } 

下划线表示法对于私有变量很常见。

抛出错误是因为您基本上是在构造函数中为SeatNumber分配了一些东西,然后在属性中再次执行它。 在Visual Studio中创建类字段时,键入“propfull”并按Tab键两次。 这将自动为您创建字段和属性。

对于它的价值,这是结构化类的普遍接受的方式。

 class Assign { //Fields private int _seatNumber; //Properties public int SeatNumber { get { return _seatNumber; } set { _seatNumber = value; } } //Overloaded Constructors public Assign(int sn) { SeatNumber = sn; } public Assign() { } //Methods public void SomeMethod() { //insert code } public void SomeOtherMethod() { //insert code } }//END ASSIGN CLASS