2012-12-07 179 views
3

定義我有一個類叫做Assign已經包含了

private int SeatNumber; 

    public Assign(int SeatNum) 
    { 
     SeatNumber = SeatNum; 
    } 

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

    } 

我不知道爲什麼我收到以下錯誤

e下鍵入「WindowsFormsApplication1.Assign」已經包含了定義'SeatNumber'

出了什麼問題?

回答

8

你在這裏聲明兩次相同的變量。

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; } 
} 
+0

很好,非常感謝!現在即將與另一個問題。隨着SeatNumber我也有一個「私人布爾SeatStatus_ =假」,也使用相同的方法。在我的form.cs中我有 「static int NumberOfSeats; Assign [] AssignArray = new Assign [NumberOfSeats];」和「int RowIndex = Int32.Parse(this.textSeatNumber.Text)-1;」如果行小於值「AssignArray [RowIndex] .SeatNumber = this.checkBookSeat.Checked;」但我得到一個錯誤的轉換bool int! –

+0

聽起來像您需要將您的布爾SeatStatus_重命名爲其他內容,以便它不會與int SeatStatus_變量衝突。 –

4

私人和公共變量不能有相同的名稱,這是衝突來自的地方。這樣做:

private int _seatNumber; 

public Assign(int SeatNum) 
{ 
    SeatNumber = SeatNum; 
} 

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

} 

下劃線表示法對於私有變量很常見。

5

您應該確保支持該屬性的變量具有不同的名稱。它通常使用駝峯吧:

private int seatNumber; 

public Assign(int SeatNum) 
{ 
    SeatNumber = SeatNum; 
} 

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

此外,在吸氣ANS二傳手是微不足道的情況下,開始用C#3.0,你可以使用自動屬性,像這樣:

public int SeatNumber {get; set;} 

這可以讓你刪除後備變量:編譯器會爲你處理它。

+0

+1爲自動屬性。 – Gallen

0

錯誤被拋出,因爲你'基本上在構造函數中分配一些東西給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