के साथ IENumerable कार्यान्वित करना यह एक साधारण वाक्यविन्यास प्रश्न है, लेकिन मैं इसे समझ नहीं सकता।एक ऐरे
आम तौर पर, मैं यह कर जाएगा:
public class OrderBook : IEnumerable<PriceLevel>
{
private readonly List<PriceLevel> PriceLevels = new List<PriceLevel>();
public IEnumerator<PriceLevel> GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
}
लेकिन एक सूची के बजाय, मैं एक सरणी का उपयोग करना चाहते - इस तरह:
public class ArrayOrderBook : IEnumerable<PriceLevel>
{
private PriceLevel[] PriceLevels = new PriceLevel[500];
public IEnumerator<PriceLevel> GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return PriceLevels.GetEnumerator();
}
}
IEnumerator IEnumerable.GetEnumerator()
ठीक संकलित करने के लिए लगता है - लेकिन सार्वजनिक IEnumerator<PriceLevel>
कहता है कि मुझे किसी प्रकार की कास्ट की आवश्यकता है - ऐसा करने का सबसे अच्छा तरीका क्या है?
विलियम
क्यों? इसके लिए एक सरणी का उपयोग क्यों करें? – Oded
'सूची' का उपयोग एक सरणी द्वारा स्वयं किया जाता है, इसलिए आप अपने काम के एक ओवरकंपिकेशन को छोड़कर कुछ हासिल नहीं कर रहे हैं। – Tudor
@ ट्यूडर कक्षा में कौन सा तर्क चलाता है, इस पर निर्भर करता है, यह 'प्राइसलेवल' के लिए एक सरणी (उदाहरण के लिए एक निश्चित आकार) के लिए अधिक समझ सकता है। उसमें दोबारा प्रतिक्रिया करने के लिए कुछ भी गलत नहीं है। –