2012-07-12 8 views
5

यदि मैं तत्वों की संख्या के बारे में कोई अग्रिम जानकारी के साथ डेटा जमा कर रहा हूं, तो मैं एक सरणी का उपयोग कर सकता हूं और इसे Redim Preserve का उपयोग करके आवश्यकतानुसार बढ़ा सकता हूं, लेकिन List आमतौर पर अधिक कुशल होगा। उदाहरण के लिए:क्या सूची (संरचना का) के भीतर तत्वों को अपडेट करना संभव है?

Dim vehicle As New List(Of String)(4) 

vehicle.Add("car") 
vehicle.Add("bicycle") 
vehicle.Add("truck") 
vehicle.Add("taxi") 
vehicle.Add("motorbike") 
vehicle.Add("bus") 

हालांकि 4 की मेरा अनुमान के रूप में तत्वों की अधिकतम संख्या गलत था, मैं नए तत्व समस्याओं के बिना जोड़ सकते हैं।

मैं तत्वों तो प्रदर्शित कर सकते हैं:

For inx = 0 To vehicle.Count - 1 
    Debug.Print(" " & inx & " " & vehicle(inx)) 
Next 

और मिलती है:

0 car 
1 bicycle 
2 truck 
3 taxi 
4 motorbike 
5 bus 

के रूप में आवश्यक और पुन: प्रदर्शित मैं तत्वों को अपडेट कर सकते हैं:

vehicle(2) = "coach" 
vehicle(4) = "cart" 

For inx = 0 To vehicle.Count - 1 
    Debug.Print(" " & inx & " " & vehicle(inx)) 
Next 

पाने के लिए:

0 car 
1 bicycle 
2 coach 
3 taxi 
4 cart 
5 bus 
साथ सूची की सामग्री को प्रदर्शित

Structure SpersonDtl 
    Dim familyName As String 
    Dim givenName As String 
    Dim age As Integer 
End Structure 

Dim personDtl As New List(Of SpersonDtl)(4) 
Dim personDtlCrnt As SpersonDtl 

personDtlCrnt.familyName = "Smith" 
personDtlCrnt.givenName = "John" 
personDtlCrnt.age = 20 
personDtl.Add(personDtlCrnt) 

personDtlCrnt.familyName = "Brown" 
personDtlCrnt.givenName = "Clare" 
personDtlCrnt.age = 21 
personDtl.Add(personDtlCrnt) 

personDtlCrnt.familyName = "Wilson" 
personDtlCrnt.givenName = "David" 
personDtlCrnt.age = 22 
personDtl.Add(personDtlCrnt) 

personDtlCrnt.familyName = "Fox" 
personDtlCrnt.givenName = "Wendy" 
personDtlCrnt.age = 23 
personDtl.Add(personDtlCrnt) 

: +०५३६९१३६३२१०

मैं लगभग के रूप में आसानी संरचनाओं की एक सूची बना सकते हैं

For inx = 0 To personDtl.Count - 1 
    Debug.Print(" " & inx & " " & personDtl(inx).givenName & " " & _ 
       personDtl(inx).familyName & " " & personDtl(inx).age) 
Next 

देता है:

0 John Smith 20 
1 Clare Brown 21 
2 David Wilson 22 
3 Wendy Fox 23 

तो personDtl एक सरणी थे, मैं आसानी से एक तत्व अद्यतन कर सकते हैं। वेंडी की उम्र सही करने के लिए, मैं लिखने होगा:

personDtl(3).age = 24 

हालांकि, एक सूची के साथ एक ही बयान, personDtl(3).age के तहत एक ब्लू लाइन में परिणाम और त्रुटि संदेश: "अभिव्यक्ति एक मूल्य है और इसलिए का लक्ष्य नहीं हो सकता । एक काम "

सबसे अच्छा समाधान मैंने पाया है: बड़े, जटिल संरचनाओं में जानकारी

Dim personDtlCrnt As SpersonDtl 

personDtlCrnt = personDtl(3) 
personDtlCrnt.age = 24 
personDtl(3) = personDtlCrnt 'Write back. 

अपने आवेदन में, मैं जमा कर रहा हूँ। सूची में से किसी तत्व को कॉपी करने के लिए, जानकारी का एक नया आइटम जोड़ें और फिर इसे कॉपी करें एक प्रभावी प्रक्रिया नहीं होगी।

मैं वैकल्पिक दृष्टिकोण के लिए किसी भी सुझाव के लिए आभारी रहूंगा।

उत्तर

9

संरचना के बजाए कक्षा का उपयोग करने का प्रयास करें।

से Choosing Between Classes and Structures

एक संरचना के बजाय एक वर्ग को परिभाषित करने पर विचार प्रकार की घटनाओं की छोटी और आमतौर पर अल्पकालिक हैं या आम तौर पर अन्य वस्तुओं में एम्बेडेड रहे हैं।जब तक प्रकार निम्नलिखित विशेषताएं के सभी है

एक संरचना को परिभाषित नहीं है:

  • यह तार्किक एकल मान, आदिम प्रकार (पूर्णांक, डबल, और इसी तरह) के लिए इसी तरह का प्रतिनिधित्व करता है।

  • इसका एक उदाहरण आकार 16 बाइट से छोटा है।

  • यह अपरिवर्तनीय है।

  • इसे अक्सर बॉक्सिंग नहीं करना होगा।

यदि इनमें से एक या अधिक स्थितियों को पूरा नहीं किया गया है, तो संरचना के बजाय संदर्भ प्रकार बनाएं। इस दिशानिर्देश का पालन करने में विफलता प्रदर्शन पर नकारात्मक प्रभाव डाल सकती है।

आप अपने स्पर्सन डीटीएल "संरचना" को मूल्यों में से एक को बदलकर उत्परिवर्तनीय होना चाहते हैं, जो ऊपर सूचीबद्ध उन विशेषताओं में से एक को तोड़ रहा है।

+1

लिंक के लिए धन्यवाद। यह कुछ सावधानीपूर्वक पढ़ने लगेगा। –

+0

मुझे लिस्टों के लिए बहुत सारी मदद मिल सकती है और कक्षाओं के लिए बहुत मदद मिल सकती है लेकिन कक्षाओं की सूची के लिए कोई भी नहीं। फिर भी, मैंने अपना छोटा परीक्षण केस काम करने में कामयाब रहा है। मुझे अध्ययन और प्रयोग पर अधिक समय बिताना होगा, लेकिन यह स्पष्ट रूप से सही दृष्टिकोण है। धन्यवाद। –

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

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