2016-03-23 9 views
5

यह लोगों के लिए एक साधारण सवाल हो सकता है, लेकिन मैं नहीं देख सकता कि यह क्यों हो रहा है। यहाँ मेरी कोड 1 है:कक्षा, संरचना, या इंटरफेस सदस्य घोषणा में अमान्य टोकन '=' सी #

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace GameCore 
{ 
    public class PlayerCharacter 
    { 

     public void Hit(int damage) 
     { 
      Health -= damage; 

      if (Health <= 0) 
      { 
       IsDead = true; 
      } 
     } 

     public int Health { get; private set; } = 100; 
     public bool IsDead{ get; private set; } 

    } 
} 

अब दृश्य स्टूडियो काम चिह्न (=) (शीर्षक के अनुसार) पर अमान्य टोकन त्रुटि दे रहा है, और मैं क्यों नहीं देख सकता। क्या कोई इस पर प्रकाश डाल सकता है?

जो मैं करने की कोशिश कर रहा हूं वह स्वास्थ्य के int को 100 तक सेट करता है, और हर बार जब कोई चरित्र नुकसान पहुंचाता है, तो स्वास्थ्य कम हो जाता है। सबको शुक्रीया।

मैं विजुअल स्टूडियो 2013 v12.0.40629.00 अद्यतन उपयोग कर रहा हूँ 5

+0

@ सिमोनकर्ल्सन में मदद करता है हकीकत, किसी भी हिट के बाद शायद मौत की जांच की जाएगी। व्यक्तिगत रूप से मैं सिर्फ एक और कॉल से बचने के लिए हिट को बूलियन के रूप में वापस कर दूंगा। वैसे भी, अपने खेल को अनुकूलित करना यहां सवाल नहीं है। – Nyerguds

+0

धन्यवाद दोस्तों, मैं इस पर विचार करूंगा, यह specFlow के साथ प्रयोग के लिए एक साधारण वर्ग है ... मैं बाद में सार्वजनिक बूल बदल दूंगा .. बस चीजों को एटीएम प्राप्त करना चाहता था। धन्यवाद, जी –

+0

@ न्यूरुगुड्स आप सही हैं, हमें यह नहीं करना चाहिए कि मेरा मुद्दा सहीता को सुनिश्चित करने के बजाय अनुकूलन करना था। उस परिदृश्य की कल्पना करें जहां वह एक पुनर्जीवित विधि जोड़ता है, फिर उसे यहां 'बूल' 'इडडेड' के मूल्य को बदलने की भी आवश्यकता होगी। मेरा मुद्दा यह था कि 'IsDead' एक चेक का अधिक वास्तविक मूल्य है। :) –

उत्तर

8

ऑटो कार्यान्वित गुण के लिए एक डिफ़ॉल्ट-मूल्य settting सी # -संस्करण 6 और ऊपर की तरफ से ही उपलब्ध है।

public class PlayerCharacter { 
    public int Health { get; private set; } 

    public PlayerCharacter() 
    { 
     this.Health = 100; 
    } 
} 

VS2013 के लिए आप this approach उपयोग कर सकते हैं संकलक सक्षम करने के लिए: संस्करण 6 इससे पहले कि आप निर्माता का उपयोग करें और वहाँ डिफ़ॉल्ट-मूल्य सेट करना होगा।

+0

धन्यवाद HimBromBeere - लेकिन मैं उस कोड में कहां रखूं जहां मैंने उपरोक्त मुख्य प्रश्न में प्रतिलिपि बनाई है? एक नोब का खेद है, बस सीखना। आसान जाओ, धन्यवाद।ग्रीम –

+0

सीधे 'प्लेयर कैरेक्टर' श्रेणी में, इसके शीर्ष पर पहले से ही। – HimBromBeere

+0

हाय HimBromBeere - मुझे लगता है कि मैंने कुछ गलत किया है ... यहां नया कोड है, जिसे यह बिल्कुल पसंद नहीं है, क्षमा करें। नामस्थान गेमकोर { पब्लिक क्लास प्लेयर कैरेक्टर { सार्वजनिक int स्वास्थ्य {प्राप्त करें; निजी सेट; } सार्वजनिक प्लेयर कैरेक्टर { यह। हेल्थ = 100; } सार्वजनिक शून्य हिट (int नुकसान) { स्वास्थ्य - = क्षति; अगर (स्वास्थ्य <= 0) { IsDead = true; } } सार्वजनिक बूल IsDead {get; निजी सेट; } } } –

0

जवाब था:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace GameCore 
{ 
    public class PlayerCharacter 
    { 

     public int Health { get; private set; } 

     public PlayerCharacter() 
     { 
      this.Health = 100; 
     } 


     public void Hit(int damage) 
     { 
      Health -= damage; 


      if (Health <= 0) 
      { 
       IsDead = true; 
      } 
     } 




     public bool IsDead{ get; private set; } 

    } 
} 

निर्माता के साथ() और नहीं PLayerCharacter के रूप में {आदि

सब करने के लिए धन्यवाद एक समारोह बनाने, मेरे छेद में वापस मैं जाना।

0

ऐसा लगता है कि यह त्रुटि आपके एमएसबिल्ड के संस्करण के कारण होती है, एमएसबिल्ड का पुराना संस्करण केवल सी # संस्करण 4 संकलित कर सकता है, जबकि आपका कोड सी # संस्करण 6 प्रारूप में लिखा गया है (गुणों के लिए डिफ़ॉल्ट मान सेट करें)।

सी # संस्करण 6 में कोड लिखने का उदाहरण:

public static string HostName { get; set; } = ConfigurationManager.AppSettings["RabbitMQHostName"] ?? ""; 

MSBuild अपने कोड को संकलित करने के लिए, आप सी # 4 शैली में लिखने की ज़रूरत

public static string HostName { get; set; } 
public SomeConstructor() 
     { 
      HostName = ConfigurationManager.AppSettings["RabbitMQHostName"] ?? "";... } 

या

public static string HostName 
     { 
      get 
      { 
       return ConfigurationManager.AppSettings["RabbitMQHostName"] ?? ""; 
      } 
     } 

उम्मीद है कि यह

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