ठीक है, मुझे आशा है कि समुदाय बड़े पैमाने पर कार्यस्थल बहस को हल करने में हमारी सहायता करेगा जो थोड़ी देर के लिए चल रहा है। इसे इंटरफेस को परिभाषित करने के साथ करना है जो या तो किसी प्रकार की सूचियों को स्वीकार या वापस कर देता है। ऐसा करने के कई तरीके हैं:आप इंटरफेस के लिए कौन सा पसंद करते हैं: टी [], आईनेमेरेबल <T>, IList <T>, या अन्य?
public interface Foo
{
Bar[] Bars { get; }
IEnumerable<Bar> Bars { get; }
ICollection<Bar> Bars { get; }
IList<Bar> Bars { get; }
}
मेरा अपना वरीयता वापसी मूल्यों के लिए तर्क और सरणियों के लिए IEnumerable उपयोग करने के लिए है:
public interface Foo
{
void Do(IEnumerable<Bar> bars);
Bar[] Bars { get; }
}
इस दृष्टिकोण के लिए मेरे तर्क यह है कि कार्यान्वयन वर्ग एक बना सकते हैं सीधे आईनेमरेबल से सूचीबद्ध करें और बस इसे सूची.ToArray() के साथ वापस कर दें। हालांकि कुछ का मानना है कि एक सरणी के बजाय IList वापस किया जाना चाहिए। मेरे पास यहां की समस्या यह है कि अब लौटने से पहले इसे पढ़ने के लिए इसे केवल पढ़ने की आवश्यकता है। IENumerable लौटने का विकल्प क्लाइंट कोड के लिए परेशानी प्रतीत होता है?
आप क्या उपयोग करते हैं/पसंद करते हैं? (विशेष रूप से पुस्तकालयों के संबंध में जो आपके संगठन के बाहर अन्य डेवलपर्स द्वारा उपयोग किए जाएंगे)
मैंने अपने तरीकों की त्रुटियों को देखा है। नीचे दिए गए कई राज्यों के स्पष्ट डेवलपर्स टी [] गुणों को नहीं देखते हैं अपरिवर्तनीय। मुझे लगता है कि उनके दुरुपयोग ने मुझे कुछ बुरी आदतों को सिखाया है। अगर मैंने एक प्रतिलिपि बनाई है, तो मैंने सरणी को संशोधित नहीं किया है, हालांकि, मुझे लगता है कि यह पैदा हुआ भ्रम का एहसास हुआ है। आईनेमेरेबल एक हाथ से नीचे है मुझे लगता है कि विजेता। –