2013-03-05 27 views
6

Từ http://xbox.create.msdn.com/en-US/education/tutorial/2dgame/creating_the_player, nó được chỉ thị rằng mã này được sử dụng:C# 'get' accessor không được công nhận

public int Width() 
    { 
     get { return PlayerTexture.Width; } 
    } 

    public int Height() 
    { 
     get { return PlayerTexture.Height; } 
    } 

Tuy nhiên, 'được' accessor không xuất hiện để được công nhận ở tất cả. Tôi nhận được các lỗi sau:

  • Tên 'get' không tồn tại trong ngữ cảnh hiện tại.

  • Chỉ có thể sử dụng chỉ định, gọi, tăng, giảm và biểu thức đối tượng mới làm tuyên bố.

Tôi có thiếu dòng 'using System. (Something)' không? Tôi đã nhìn thấy điều này được sử dụng thành công vô số lần trong khi điều tra vấn đề của tôi nhưng tôi không thể tìm thấy bất cứ ai đã chạy vào cùng một điều.

Tôi đang sử dụng XNA Game Studio 4.0 với Microsoft Visual C# 2010 Express. Đây là mã của tôi đầy đủ cho các lớp Player.cs:

using System; 
using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Graphics; 

namespace Shooter 
{ 
class Player 
{ 
    private Texture2D PlayerTexture; 
    public Vector2 Position; 
    public bool Active; 
    public int Health; 

    public int Width() 
    { 
     get { return PlayerTexture.Width; } 
    } 

    public int Height() 
    { 
     get { return PlayerTexture.Height; } 
    } 

    public void Initialise(Texture2D texture, Vector2 position) 
    { 
     PlayerTexture = texture; 
     Position = position; 
     Active = true; 
     Health = 100; 
    } 

    public void Update() 
    { 
    } 

    public void Draw(SpriteBatch spriteBatch) 
    { 
     spriteBatch.Draw(PlayerTexture, Position, null, Color.White, 0f, Vector2.Zero, 1f, SpriteEffects.None, 0f); 
    } 
} 
} 

Trả lời

13

Đây không phải là kê khai tài sản có giá trị:

public int Width() 
{ 
    get { return PlayerTexture.Width; } 
} 

Phần () là không chính xác - trông giống như bạn đang cố gắng để khai báo một phương pháp chứ không phải là một tài sản. Bạn nên có:

public int Width 
{ 
    get { return PlayerTexture.Width; } 
} 

(. Tôi đã không kiểm tra phần còn lại, nhưng điều đó cũng có thể là tất cả những gì sai)

+0

Jon, tôi rất lo lắng về tốc độ trả lời đó! – Sam

+0

Wow, làm việc hoàn hảo. Cảm ơn một người đàn ông! Sẽ chấp nhận câu trả lời ngay khi nó cho phép. – user2134261

+0

Vâng, nhanh hơn tôi có thể nhập của tôi, LOL –

0

Bạn sẽ phải loại bỏ các (), các () chỉ ra nó là một phương pháp, không một tài sản

Phương pháp:

public int Width() 
{ 
    return PlayerTexture.Width; 
} 

tài sản:

public int Width 
{ 
    get { return PlayerTexture.Width; } 
}