शीर्षक भ्रामक है, इसलिए कृपया संपूर्ण प्रश्न :-) पढ़ें ।
"कम्पाउंड असाइनमेंट ऑपरेटर" द्वारा मुझे इस तरह के निर्माण का ध्यान रखना है op=
, उदाहरण के लिए +=
। शुद्ध असाइनमेंट ऑपरेटर ( =
) मेरे प्रश्न से संबंधित नहीं है।
"क्यों" से मेरा मतलब एक राय नहीं है, लेकिन संसाधन (पुस्तक, लेख, आदि) जब कुछ डिजाइनर, या उनके सहकर्मी, आदि अपने तर्क (यानी डिजाइन पसंद का स्रोत) व्यक्त करते हैं ।
मैं सी ++ और सी # में पाया विषमता से हैरान हूं ( हाँ, मुझे पता है कि सी # सी + + 2.0 नहीं है ) - सी ++ में आप ऑपरेटर को अधिभारित करेंगे +=
और फिर +
पहले से परिभाषित ऑपरेटर पर भरोसा करते हुए लगभग स्वचालित रूप से उपयुक्त ऑपरेटर लिखेंगे । C # में यह उल्टा है - आप अधिक भार लेते हैं +
और +=
आपके लिए संश्लेषित होते हैं।
यदि मैं गलत नहीं हूँ तो बाद का दृष्टिकोण वास्तविक के मामले में अनुकूलन के लिए एक मौका को मारता है +=
, क्योंकि नई वस्तु का निर्माण किया जाना है। इसलिए इस तरह के दृष्टिकोण का कुछ बड़ा फायदा होना चाहिए, लेकिन MSDN इसके बारे में बताने में बहुत शर्मिंदा है।
और मुझे आश्चर्य है कि वह लाभ क्या है - इसलिए यदि आप किसी सी # पुस्तक, टेक-टॉक वीडियो, ब्लॉग प्रविष्टि में स्पष्टीकरण देते हैं, तो मैं संदर्भ के लिए आभारी रहूंगा।
निकटतम चीज़ जो मुझे मिली है वह एरिक लिपर्ट ब्लॉग पर एक टिप्पणी है कि ओवरलोड ऑपरेटरों को सी # में हमेशा स्थिर क्यों रखा जाता है? टॉम ब्राउन द्वारा। यदि स्टैटिक ओवरलोडिंग का निर्णय लिया गया था, तो यह केवल यह निर्धारित करता है कि कौन से ऑपरेटर्स को स्ट्रक्चर्स के लिए ओवरलोड किया जा सकता है। यह आगे तय करता है कि कक्षाओं के लिए अधिभार क्या हो सकता है।
*=
एक संदर्भ प्रकार को शब्दार्थिक रूप से गलत करना चाहूंगा ।
+=
पहले ओवरलोडिंग बेतुका लगता है; आप इसके हिस्सों के बजाय एक संयुक्त ऑपरेशन को क्यों अधिभारित करेंगे?