में जावा वाइल्डकार्ड के समतुल्य क्या है मैं एक ऐसे अनुप्रयोग को विकसित कर रहा हूं जहां मुझे एक सामान्य वर्ग की विधि का आह्वान करने की आवश्यकता है और मुझे वास्तविक प्रकार के उदाहरणों की परवाह नहीं है। निम्नलिखित जावा कोड की तरह कुछ:सी # जेनेरिक
public class Item<T>{
private T item;
public doSomething(){...}
}
...
public void processItems(Item<?>[] items){
for(Item<?> item : items)
item.doSomething();
}
समय मैं जल्दी पर था, इसलिए मैं तरीकों मैं आह्वान करने के लिए की जरूरत के साथ एक इंटरफेस को परिभाषित करते हुए मेरी समस्या हल और सामान्य वर्ग इसे लागू कर दिया।
public interface IItem
{
void doSomething();
}
public class Item<T> : IItem {
private T item;
public void doSomething(){...}
}
...
public void processItems(IItem[] items)
{
foreach(IItem item in items)
item.doSomething();
}
इस तरीके को ठीक काम करता है, लेकिन मुझे पता है कि एक ही व्यवहार प्राप्त करने के लिए सही तरीका है क्या करना चाहते हैं।
संपादित करें:
मैं उल्लेख करने के लिए कि processItems
के फोन करने वाले वास्तविक प्रकार पता नहीं है भूल गया। दरअसल विचार यह था कि processItems
पर तर्क के रूप में पारित सरणी अंतःस्थापित प्रकार हो सकती है। चूंकि .NET में ऐसी कोई सरणी नहीं है, इसलिए गैर-सामान्य बेस क्लास या इंटरफ़ेस का उपयोग करना एकमात्र तरीका है।
ब्लैग, कुछ सेकंड जल्द ही। : पी –
हाँ, मुझे भी मारो। क्या आप कॉलर के उदाहरण के साथ संपादित कर सकते हैं, यद्यपि? –
बस 'प्रोसेस इटम्स (डेटा); ' –