मैं कक्षाओं और structs में मूल्यों को लोड करते समय Nullable<T>
प्रकारों का उपयोग करता हूं, जब मुझे उन्हें अनुपलब्ध करने की आवश्यकता होती है, जैसे डेटाबेस से एक शून्य मूल्य (नीचे उदाहरण के रूप में) लोड करना।कास्टिंग (int?) शून्य बनाम नया int?() - कौन सा बेहतर है?
कोड के इस स्निपेट पर विचार करें:
public class InfoObject
{
public int? UserID { get; set; }
}
// Load the ID into an SqlInt32
SqlInt32 userID = reader.GetSqlInt32(reader.GetOrdinal("intUserID"));
जब मैं एक नल संपत्ति में कोई मान लोड करने के लिए की जरूरत है, कभी कभी मैं यह कर:
infoObject.UserID = userID.IsNull ? (int?)null : userID.Value;
कभी कभी मैं इस बजाय कार्य करें:
infoObject.UserID = userID.IsNull ? new int?() : userID.Value;
हालांकि वे एक ही परिणाम प्राप्त करते हैं, लेकिन मैं देखना चाहता हूं कि क्या कोई जानता है कि 012 के बीच उपयोग करना बेहतर है प्रदर्शन, छोटे आईएल कोड, सर्वोत्तम प्रथाओं आदि के संबंध मेंऔर new int?()
?
आम तौर पर मैं ऊपर कोड की new int?()
संस्करण के पक्ष में किया गया है, लेकिन मैं यकीन नहीं है कि कास्टिंग (int?)null
new int?()
से हल करने के लिए संकलक तेज है नहीं कर रहा हूँ।
चीयर्स!
मैं आपसे सहमत हूं। '(int?) null'' int int '()' से कहीं बेहतर दिखता है, विशेष रूप से जब मेरे उदाहरण शो जैसे ऑनलाइन सशर्त बयान के भीतर उपयोग किया जाता है। आपके प्रश्न के बारे में: आपने जवाब दिया जब आपने कहा कि आईएल एक जैसा है। निर्माण समय वर्तमान में कोई मुद्दा नहीं है (जब तक कि मैं टीएफएसबिल्ड का उपयोग नहीं करता, लेकिन यह एक पूरी कहानी है) इसलिए आईएल मैचों के इतने लंबे समय तक, मैं खुश हूं :) – Codesleuth
मेरा पसंदीदा (कास्ट संस्करण के साथ बहुत करीब दूसरे के रूप में) 'डिफ़ॉल्ट (int?)' है। – sblom