Sunday, 15 June 2014

c# - What is proper way to check if List<MyClass> contain copy of some MyClass object? -


मेरे पास बहुत जटिल संरचना है:

  सार्वजनिक स्थैतिक सूची & lt; state & gt; राज्य = नई सूची & lt; राज्य & gt; (); सार्वजनिक वर्ग की स्थिति: सूची & lt; स्थिति & gt; {} सार्वजनिक वर्ग की स्थिति {// सार्वजनिक नियम नियम; // एक अन्य जटिल ऑब्जेक्ट सार्वजनिक आईएनजी; सार्वजनिक स्ट्रिंग शब्द; सार्वजनिक स्थिति (/ * नियम नियम, * / स्ट्रिंग टर्मिनल, इंट पॉइंट) {//this.rule = rule; This.term = टर्मिनल; This.pos = pointpoint; }}  

मेरे प्रोग्राम में मैं नया राज्य वस्तुओं को उत्पन्न करता है जो कि राज्यों सूची में जोड़ा जाना चाहिए। लेकिन केवल अगर यहां इस सूची में राज्य कोई भी स्थिति ऑब्जेक्ट्स में state सूची में कोई बात नहीं है और इसमें भिन्न नहीं हो सकता है दो राज्य क्या वास्तव में बराबर है)।

मैंने यह कोशिश की:

  states.Add (नया राज्य ()); राज्यों [0]। जोड़ें (नई स्थिति ("#", 0)); राज्य = नया राज्य (); S.Add (नई स्थिति ("#", 0)); अगर (राज्यों। शामिल हैं) {Console.WriteLine ("HODOR");  

ऐसा लगता है कि इसमें कस्टम ऑब्जेक्ट के साथ सही काम नहीं करता है, इसलिए मुझे कुछ कस्टम विधि बनाना चाहिए।

मैं सिर्फ प्रत्येक वस्तुओं और प्रत्येक फ़ील्ड की तुलना कर सकता हूं ... लेकिन यह बहुत थकाऊ और बदसूरत समाधान की तरह दिखता है। हो सकता है कि ऐसा करने का कोई बेहतर तरीका हो?

ओवरराइड equals में अपनी स्थिति वर्ग और अपनी समानता को लागू करें:

  सार्वजनिक वर्ग की स्थिति {सार्वजनिक स्ट्रिंग टर्मिनल {रिटर्न टर्म;}} सार्वजनिक इंट पॉस {get {return pos;}} सार्वजनिक ओवरराइड बूल बराबर (वस्तु obj) {bool परिणाम; स्थिति एस = obj स्थिति के रूप में; यदि (एस! = नल) {परिणाम = टर्मिनल। एक्लल्स (एस। टर्मिनल) & amp; amp; Pos == s.Pos; } वापसी परिणाम; }}  

No comments:

Post a Comment