2013-01-21 14 views
17

VB.NET में मैं इस तरह काम करने के लिए इस्तेमाल किया कर रहा हूँ जब गुमनाम प्रकार (VB.NET anonymous types include the notion of Key Fields) बनाने:मैं सी # अज्ञात प्रकारों में "कुंजी" फ़ील्ड कैसे घोषित करूं?

Dim prod1 = New With { 
    Key .Name = "paperclips", 
    Key .Price = 1.29, 
    .OnHand = 423 
} 

हालांकि, मैं, सी # में ऐसा करने का किसी भी तरह से प्राप्त करने में सक्षम नहीं किया गया है के बाद से प्रतीत होता है कि Key कीवर्ड समर्थित नहीं है।

वहाँ किसी भी तरह से सी # है कि मैं केवल अनाम प्रकार में से कुछ फ़ील्ड की तुलना करना चाहते जब समानता की तलाश में इंगित करने के लिए है?

+3

मैं हमेशा सी # और वीबी के बीच छोटे अंतर से आश्चर्यचकित हूं। मुझे निश्चित रूप से पता नहीं था कि आप यह कर सकते हैं वीबी है। – svick

उत्तर

17

कि सी # में ऐसा कुछ नहीं है। In C#, अज्ञात प्रकार के सभी गुण केवल पढ़ने के लिए हैं और समानता तुलना में भाग लेते हैं।

आप सी # में कुछ इस तरह करना चाहते हैं, तो आप अपने खुद के (नाम) प्रकार बनाने की आवश्यकता होगी।

+3

थोड़ा विस्तार करने के लिए: एमएसडीएन का कहना है कि स्वचालित रूप से जेनरेट किए गए 'बराबर' और 'गेटहाशकोड' कार्यान्वयन अनाम प्रकार की प्रत्येक प्रॉपर्टी का उपयोग करते हैं। वे 'समानता' और 'गेटहाशकोड' के कार्यान्वयन को कॉल करने के लिए प्रत्येक प्रकार के गुणों का उपयोग करते हैं। –

+1

यह एक शर्म की बात है कि ऐसी आसान सुविधा सी # में मौजूद नहीं है। यह शायद ज्यादा के लायक नहीं है, लेकिन मैं एक [सुझाव] (बनाया http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3572724-c-feature-request-key-fields-in-anonymous- प्रकार) एक सुविधा अनुरोध के लिए uservoice मंचों पर। – Daniel

+1

क्या इसका मतलब यह है कि प्रभावी रूप से, सी # में अज्ञात प्रकार की प्रत्येक संपत्ति VB.NET कुंजी प्रॉपर्टी के समान है? – TheEvilPenguin

3

सी # में कोई कुंजी बराबर नहीं है।

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