Action<T>
मान सेट करते समय मुझे एक सशर्त कथन के साथ यह वास्तव में अजीब समस्या है। ऐसा नहीं है कि मुझे नहीं पता कि इस बारे में कैसे काम करना है क्योंकि सामान्य if
का उपयोग कर हल करना बहुत आसान है।सशर्त कथन, जेनेरिक प्रतिनिधि अनावश्यक कास्ट
public class Test
{
public bool Foo { get; set; }
public Action<bool> Action { get; set; }
public void A()
{
Action = Foo ? B : C;//Gives compiler error
}
public void B(bool value)
{
}
public void C(bool value)
{
}
}
यह मैं संदेश
वहाँ 'विधि समूह' और 'विधि समूह' के बीच कोई अंतर्निहित रूपांतरण के साथ एक संकलक त्रुटि देता है:
यहाँ मेरी समस्या है।
जो अजीब बात है क्योंकि मुझे पता नहीं चल सकता कि यह अवैध क्यों होगा।
वैसे, नीचे वाक्य रचना कर देगा यह वैध (देखने के compilers बिंदु से):
public void A()
{
Action = Foo ? (Action<bool>) B : C;
}
तो हो सकता है आप सवाल पढ़ सकते हैं के रूप में, क्यों डाली आवश्यक है?
मैंने सोचा कि सी # कंपाइलर यह जांचने के लिए पर्याप्त स्मार्ट है ... –