using float + Lambda Expressions C# -
var दूरी = नया शब्दकोश & lt; char, float & gt; (); Var नोड्स = नई सूची & lt; char & gt; (); मेरे पास सबसे कम दूरी
नोड्स खोजने के लिए यह रेखा है। ((एक्स, वाई) = नोड्स = दूरी [x] - दूरी [y ]); जब मैं int का उपयोग करता हूं तो यह अच्छी तरह से काम करता है, लेकिन जब मैंने float इस्तेमाल किया था मुझे एक संदेश मिला
< P> लैम्ब्डा अभिव्यक्ति को 'System.Collections.Generic.IComparer' टाइप करने के लिए परिवर्तित नहीं किया जा सकता क्योंकि यह एक प्रतिनिधि प्रकार नहीं है
क्या आपके पास एक विचार है?
सबसे पहले, आपका मूल प्रोग्राम एक बुरा प्रोग्रामिंग अभ्यास है, जब मान पूर्णांक होते हैं। यह वर्णों के लिए काम करता है, लेकिन मैं इस खराब प्रोग्रामिंग अभ्यास से बचना चाहूंगा।
आप जिस सॉर्ट समारोह को पास करते हैं, उसके पास कई गुण हैं; विशेष रूप से अगर यह y से छोटा है, तो एक सकारात्मक int लौटा देना चाहिए, एक सकारात्मक int यदि x y से अधिक है, और शून्य यदि वे समान हैं। आपका मूल लैम्ब्डा पूर्णांक मानों के लिए ऐसा नहीं करता। (यदि आप दो पूर्णांक x और y को पा सकते हैं कि y y से छोटा है लेकिन x - y सकारात्मक है।)
प्रतिनिधि को कुल आदेश भी लागू करना चाहिए कुल आदेश में:
- ट्रांज़िटिविटी को अवश्य रखना चाहिए अगर ए == बी और बी == सी तो ए बराबर सी चाहिए अगर ए & lt; बी और बी एंड एलटी; सी तो ए सी से छोटा होना चाहिए।
- यह एंटीसिमेट्रिक होना चाहिए। यही है, अगर ए & lt; बी तो बी> ए, और इतने पर।
घटाव इन स्थितियों को पूर्णांक में नहीं मिलती है सही कोड वास्तव में एक तुलना लिखना है।
नोड्स.Sort ((x, y) = & gt; x & lt; y? -1: (x & gt; y? 1: 0) ); तब उसके बाद वर्ण और फ़्लोट्स के लिए अच्छी तरह से काम करता है, कोई भी नाएनएस नहीं है यदि आपके पास नाओएन हैं तो आपको कुल आदेश लगाने के लिए अतिरिक्त कार्य करने की आवश्यकता है।
मैं यह भी बताता हूं कि आमतौर पर वर्णों की तुलना में यह तुलना आपकी पसंद की तुलना नहीं होती है। ज़रूर, यह सही ढंग से ध्यान रखेगा कि e z से छोटा है, लेकिन साधारण क्रमिक तुलना यह भी कहती है कि z é < / कोड>, जो संभवत: आप क्या चाहते हैं वर्ण क्रम संस्कृति पर निर्भर करता है; क्या आप निश्चित हैं कि आप इस आदेश से आदेश देना चाहते हैं कि यूनिकोड समिति ने बस लागू किया?
इस विषय पर अधिक लेख के लिए मेरी श्रृंखला देखें; यह यहाँ शुरू होता है:
Comments
Post a Comment