2013-01-17 13 views
5

में चर के बीच अस्पष्टता मैं कहकर शुरू करना चाहता हूं कि मैंने पहले खोज की है, और कई अन्य चीजों पर बहुत सारे मुद्दे मिलते हैं, लेकिन यह समस्या बिल्कुल नहीं।सी #

मैं इस कोड है:

namespace New_Game.GameClasses 
{ 
    /// <summary> 
    /// This is a game component that implements IUpdateable. 
    /// </summary> 
    public class Error : Microsoft.Xna.Framework.GameComponent 
    { 
     bool gameOver = false; 
     List<Enemy> enemies = new List<Enemy>(); 

     public bool gameOver { 
      get { return gameOver; } 
      set { gameOver = value; } 
     } 

     public override void Update(GameTime gameTime, Vector2 target) 
     { 
      // TODO: Add your update code here 
      Rectangle playerRect = new Rectangle((int)target.X, (int)target.Y, 64, 64); 

      foreach (Enemy e in enemies) 
      { 
       e.Target = target; 
       e.Update(gameTime); 
       Rectangle enemyRect = new Rectangle((int)e.Position.X + 7, (int)e.Position.Y + 7, 32 - 7, 32 - 7); 

       if (playerRect.Intersects(enemyRect)) 
       { 
        gameOver = true; 
       } 
      } 
     } 
    } 
} 

मेरे समस्या यह कह एक त्रुटि में आता है: 'New_Game.GameClasses.Error.gameOver' और 'New_Game.GameClasses.Error.gameOver'

के बीच अस्पष्टता अगर मैं get/set विधि को हटा देता हूं, तो जब मैं अपने गेम 1.cs से गेमऑवर का प्रयास करता हूं और एक्सेस करता हूं तो मैं एक अलग त्रुटि में चला जाता हूं। अगर मैं निम्नलिखित के लिए इसे बदल मैं एक ही त्रुटि मिलती है:

public bool gameOver { get; set; } 

मेरा प्रश्न, मैं कैसे अस्पष्टता की त्रुटियां सुधारने करते है?

उत्तर

18

आप अपने निजी GAMEOVER चर नाम बदलने की जरूरत है। इस बदलें:

bool gameOver = false; 
public bool GameOver { 
     get { return gameOver; } 
     set { gameOver = value; } 
    } 

bool _gameOver = false; 
public bool GameOver { 
     get { return _gameOver; } 
     set { _gameOver = value; } 
    } 

को आप एक ही कक्षा में एक ही चर नाम का उपयोग नहीं कर सकते हैं।

वैकल्पिक रूप से, आप नेट का नवीनतम संस्करण का उपयोग कर रहे संभालने, आप अपने निजी चर को दूर कर सकता है और बस है:

public bool GameOver { get; set; } 

गुड लक।

+7

+1। इसके अलावा फॉलोवॉन्ग डिफ़ॉल्ट सी # नामकरण दिशानिर्देश इस तरह की समस्या से शुरू होने से बचेंगे (गुणों के लिए पूंजीकृत - 'गेमओवर', निजी क्षेत्रों के लिए कम मामला - 'बूल गेम ओवर;')। –

+0

मैं सी # के लिए नया हूं इसलिए मुझे एहसास नहीं हुआ कि यह एक नामकरण मार्गदर्शिका रेखा थी। अगर मेरे पास अंक थे तो मैं ऊपर हट जाऊंगा, लेकिन मैं नहीं कर सकता, इसलिए मैं आपको धन्यवाद दूंगा। :) – slooker

1

आपके पास उसी नाम का उपयोग करके आपकी कक्षा के दो घटक नहीं हो सकते हैं। तो यह बदलने के लिए:

bool gameOver = false; 

public bool gameOver 
{ 
    get { return gameOver; } 
    set { gameOver = value; } 
} 
इस के लिए

:

private Boolean m_GameOver = false; 

public Boolean GameOver 
{ 
    get { return m_GameOver; } 
    set { m_GameOver = value; } 
} 
2

अपने निजी एक को अपने सार्वजनिक रूप से अलग करें।

bool _gameOver = false; 

public bool gameOver { 
    get { return _gameOver; } 
    set { _gameOver = value; } 
} 
0

मेरे मामले में यह agregarPropiedad2 द्वारा वर्ग agregarPropiedad का नाम बदलने हल किया गया था।

.cs

public partial class agregarPropiedad2 

Designer.CS

public partial class agregarPropiedad2 

ASPX

Inherits="ProjectName.agregarPropiedad2" 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^