उदाहरण के लिए, अगर मैं एक विधि के रूप में परिभाषित किया गया है ...क्या यह सुनिश्चित करने के लिए कोई तरीका है कि टी शून्य नहीं है?
T Create()
{
T t = Factory.Create<T>();
// ...
Assert.IsNotNull(t, "Some message.");
// -or-
if (t == null) throw new Exception("...");
// -or- anything that verifies that it is not null
}
... और मुझे कहीं और से है कि विधि बोल रहा हूँ ...
void SomewhereElse()
{
T t = Create();
// >><<
}
... >><<
पर, मुझे पता है (मेरा मतलब है, वह व्यक्ति जिसने इसे लिखा है) कि t
शून्य होने की गारंटी नहीं है। क्या कोई तरीका है (एक विशेषता, शायद, जो मुझे नहीं मिली है) एक विधि को चिह्नित करने के लिए यह सुनिश्चित करने के लिए कि एक संदर्भ प्रकार जो यह लौटाता है या अन्यथा पास हो जाता है (शायद out
पैरामीटर) आंतरिक तर्क द्वारा शून्य नहीं होने की गारंटी है?
मुझे भेड़-बकरियों से यह मानना है कि रीशेर्पर अधिकतर क्यों है क्योंकि मुझे लगता है कि यह किसी भी चीज को हाइलाइट करता है जो InvalidOperationException
या NullReferenceException
का कारण बन सकता है। मुझे लगता है कि यह कुछ ऐसा पढ़ रहा है जिसे मैं अपने तरीकों पर चिह्नित कर सकता हूं या यह जानता है कि Assert.IsNotNull
, सरल बूलियन चेक या कुछ अन्य चीजें कुछ शून्य होने का मौका हटा देती हैं और यह हाइलाइट को हटा सकती है।
किसी भी विचार? क्या मैं सिर्फ ओह-ई-ईश्वर-रिशेर्पर-हाइलाइट्स का शिकार हो रहा हूं-यह-मुझे-ठीक-ठीक-ठीक है?
मैं भी से ग्रस्त ओह-मेरी-देवता-ReSharper-प्रकाश डाला यह मैं-है-हैं- में वर्णित उनके
[NotNull]
विशेषता के साथFactory.Create<T>()
विधि चिह्नित कर सकते हैं ठीक है यह बीमारी। तो आप अकेले नहीं हैं। –