C # में आप नामों के साथ एक मान को अन्य नाम से परिभाषित कर सकते हैं?


92

मुझे पता है कि का उपयोग करते हुए कीवर्ड के साथ सी # में उपनामों को परिभाषित करना संभव है ।

जैसे

using ResponseKey = System.ValueTuple<System.Guid, string, string>;

हालांकि, क्या मूल्य ट्यूपल्स के लिए नए सिंटैक्स का उपयोग करके किसी को परिभाषित करना संभव है?

using ResponseKey = (Guid venueId, string contentId, string answer);

यह सिंटैक्स काम नहीं करता है। इसे होना चाहिए?


1
मुझे उत्तर नहीं पता है, लेकिन यह उसी तरह दिखता है जैसे "क्या मैं एक चर को परिभाषित करने के लिए मॉड्यूल-स्तर पर var का उपयोग कर सकता हूं?"
मारियो वर्नरी

अगर यह संकलित नहीं करता है तो इसका मतलब यह नहीं है कि यह काम नहीं करना चाहिए
Selman Genç

4
मुझे इसका उत्तर नहीं पता है, लेकिन ऐसा लगता है कि उस उद्देश्य के लिए एक वर्ग या संरचना बनाना बेहतर है। टुपल्स अच्छे हैं, लेकिन कृपया इसका अधिक उपयोग न करें।
येलदार कुरमंगलियव

4
इंटरेस्टिंग कमेंट @YeldarKurmangaliyev इसका उपयोग करने का कारण किसी वस्तु के लिए एक साधारण कुंजी के रूप में उपयोग करने के लिए सभी तुलनीय इंटरफेस को लागू नहीं करना है। हां, यह मुझे आलसी लग रहा है, लेकिन यह भाषा की विशेषताओं का भी उपयोग कर रहा है।
निक रेंडेल

3
@NickRandell - ज्यादातर समय आप लोगों (अन्य डेवलपर्स) के लिए सॉफ्टवेयर लिखते हैं - वे आपका कोड पढ़ेंगे। वर्णनात्मक नामों के साथ एक वर्ग और गुण होने - अधिक अनुकूल / प्रभावी दृष्टिकोण है। अधिकांश बार प्रोग्रामर कोड (स्वयं और अन्य) को पढ़ने के लिए वर्णनात्मक नाम और डेटा संरचनाओं पर खर्च करते हैं, उनके समय की बचत होगी
Fabio

जवाबों:


67

यह अनुरोध किया गया है, और गितुब पर रोसलिन रेपो में दर्ज किया गया है । हालांकि, इसे वहां एक मिश्रित स्वागत मिला, और प्रस्तावित रिकॉर्ड प्रकार , इस आवश्यकता को कवर करने से अधिक होगा।

इस मुद्दे को रोज़लिन रेपो में बंद कर दिया गया था लेकिन अब इसे C # भाषा रेपो में ट्रैक किया जा रहा है


1

usingके रूप में परिभाषित किया गया है: ( MSDN )।using identifier = namespace-or-type-name;

(Guid venueId, string contentId, string answer) न तो एक नामस्थान है और न ही (पूरी तरह से योग्य) प्रकार का नाम है।

लेकिन मैं ज्यादातर अनुमान लगा रहा हूं। पता भी नहीं था C # 7.0 अब तक अस्तित्व में है।


1
यह सी # 1.1 के लिए कल्पना है, यह कैसे सी # 7.0 के बारे में कुछ भी साबित करता है?
svick

1
मुझे समझ में आया कि यह कैसे काम करेगा। एक ही बना सकता था लेकिन यह सही नहीं है। का उपयोग करना एक प्रकार के लिए एक उपनाम नहीं है। लेकिन एक प्रकार के नाम या नाम स्थान के नाम के लिए। और संकलक संबंधित विशेषताएं अंतिम चीज़ पर हैं जो आप बदल सकते हैं, मौजूदा कोड को तोड़ने के बिना। इसलिए वे संभवत: इसका विस्तार नहीं कर सकते। लेकिन वह सब जो डेविड अरनो के ऊपर पोस्ट में बहुत बेहतर तरीके से बताया गया है। विच I ने अपवित्र किया क्योंकि यह बेहतर उत्तर देता है। अपने प्रश्न को गैर-मुद्दों की तरह बनाना ...
क्रिस्टोफर

2
@svick प्रश्न यह था कि क्या इस विशिष्ट वाक्यविन्यास को "अनुमति दी जानी चाहिए"। यह "नहीं, सी # डेवलपर्स द्वारा सही उत्तर देता है कि वे इस विशिष्ट सिंटैक्स की अनुमति देने के लिए बाध्य नहीं हैं, क्योंकि सी # के पहले संस्करणों के बाद से समान सिंटैक्स की अनुमति नहीं थी।" व्यापक प्रश्न यह है कि क्या किसी भी प्रकार की अभिव्यक्ति की अनुमति दी जानी चाहिए using
IllidanS4 मोनिका

1
@ IllidanS4 यदि यही उत्तर कहता है, तो यह वास्तव में अस्पष्ट है। यह उल्लेख नहीं करता है कि जुड़ा हुआ युक्ति पुराना है या आपके द्वारा किए गए तर्क का कोई हिस्सा है।
22

5
@Christopher अगर मुझे लगता है कि एक उत्तर बुरा है, तो मैं इस पर टिप्पणी करूंगा। मुझे इससे कोई फर्क नहीं पड़ता कि उत्तर कितनी जल्दी लिखा गया था या उसके पास क्या अस्वीकरण है। और अगर आपको लगता है कि आपके उत्तर में कोई मूल्य नहीं है, तो उसे हटाने के लिए शुल्क महसूस करें। इसके अलावा, मुझे लगता है कि लोग एसओ को सूचित जवाब खोजने के लिए आते हैं, इसलिए हो सकता है कि आप बिना सूचना के उत्तर लिखने से पहले थोड़ा सोचें?
svick
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.