अनावश्यक कोड को कम करने के लिए, मैं कुछ फेंक सहायक तरीकों:विचार
protected static X ThrowInvalidOperation(string operation, X a, X b) {
throw new InvalidOperationException("Invalid operation: " + a.type.ToString() + " " + operation + " " + b.type.ToString());
}
उपयोग: ऑपरेटर +
हमेशा एक मान लौटाना चाहिए वजह से, मैं:
public static X operator +(X a, X b) {
if (...) {
return new X(...);
}
return ThrowInvalidOperation("+", a, b);
}
समस्या ThrowInvalidOperation
बनाकर इसे ठीक करें और इसे return
ThrowInvalidOperation("+", a, b);
वहां कई नुकसान हैं - एक ऐसा इसलिए है क्योंकि मैं इसे किसी भिन्न प्रकार की विधि से कॉल नहीं कर सकता।
मेरी इच्छा है कि हेल्पर फ़ंक्शन को चिह्नित करने का कोई तरीका है "हमेशा अपवाद फेंकता है", इसलिए संकलक वापसी मूल्यों को ट्रैक करना बंद कर देता है।
प्रश्न: मुझे यह काम करने के लिए क्या संभावनाएं हैं?
क्या आपने ऑपरेटर कार्यान्वयन में फेंकते हुए, सहायक में अपवाद बनाने पर विचार किया है? उदाहरण के लिए। 'NewInvalidOperationException (...);' – Caramiriel