मैं एक कस्टम WebControl
जो एक .Value
गेटर/एक Nullable < दशमलव >समझना अशक्त कोलेसिंग ऑपरेटर (??)
यह एक क्लाइंट-साइड फ़िल्टर किए गए पाठ बॉक्स है (TextBox
का एक उपवर्ग लौटने सेटर को लागू करता है शामिल साथ है जावास्क्रिप्ट और
public decimal? Value
{
get
{
decimal amount = 0;
if (!decimal.TryParse(this.Text, NumberStyles.Currency, null, out amount))
{
return null;
}
else
{
return amount;
}
}
set
{
if (!value.HasValue)
{
this.Text = "";
}
else
{
this.Text = string.Format("${0:#,##0.00}", value);
}
}
}
: स्थापित करने/मूल्य)
यहाँ प्राप्त करने के लिए कुछ सर्वर साइड तर्क गेटर & कि नियंत्रण से सेटर है
decimal Amount = uxAmount.Value ?? 0M;
मैं राशि देख रहा हूँ स्थापित किया जा रहा करने के लिए "0" जब uxAmount.Value
रिटर्न 10000
यह काम के रूप में मैं उम्मीद (बहाना:
समस्या यह है कि मैं दिखाई दे रही है कि इस बयान से उत्पादन होता है आवरण में परिवर्तन):
decimal? _Amount = uxAmount.Value;
decimal amount = _Amount ?? 0;
मैं भी इस व्यवहार (हाल ही में देखा है) जब एक यूडीएफ समारोह अशक्त कोलेसिंग ऑपरेटर के साथ एक Linq2Sql डेटा संदर्भ पर परिभाषित बुला, कि मुझे पता था कि मेरी यूडीएफ कॉल की उम्मीद दिया जाता है मूल्य लेकिन मैं जीई था इसके बजाय आरएचएस मूल्य tting।
आगे भ्रमित करते हुए, अगर मैं uxAmount का मूल्यांकन करता हूं। घड़ी में वैल्यू, मुझे 10000 प्रकार Nullable<decimal>
मिलता है।
यहाँ कुछ भाव मैं कोशिश की है इस प्रकार हैं:
decimal? _Amount = uxAmount.Value; //10000
decimal amount = _Amount ?? 0; //10000
decimal amount2 = _Amount ?? 0M; //10000
decimal Amount = uxAmount.Value ?? 0M; //0
तो मैं निम्नलिखित ऊपर 4
decimal amount3 = (uxTaxAmount.Value) ?? 0M;
अब
decimal Amount = uxAmount.Value ?? 0M; //10000
decimal amount3 = (uxAmount.Value) ?? 0M; //0
यह आखिरी कॉल की तरह लगता है इस अभिव्यक्ति जोड़ा हमेशा 0 है, लेकिन uxAmount.Value
का मान (जिसेसे बाहर निकाल दिया गया है 1TryParse
का उपयोग कर ऊपर गेटर/सेटर के अनुसार 10 स्थिर है। मैं ब्रेकपॉइंट पर रुक गया हूं और कोई अन्य थ्रेड नहीं है जो इस मान में हेरफेर कर सकता है।
एम प्रत्यय के उपयोग को निरंतर दशमलव के रूप में स्थिर करने के लिए नोट करें क्योंकि यह पूर्णांक था और मुझे एक प्रकार का रूपांतरण समस्या संदेह था।
कोई विचार?
एलएचएस और आरएचएस दोनों का मूल्य स्थिर और ज्ञात प्रतीत होता है।
VS2010
मुद्रा टेक्स्टबॉक्स (टेक्स्टबॉक्स का उप-वर्ग) – agrath
यह एक शून्य शून्य है [दशमलव?] - – agrath
प्रश्न के शीर्ष पर गेटर/सेटर परिभाषा देखें क्या आप सुनिश्चित हैं कि डीबगर आपको यह सही तरीके से प्रदर्शित करता है? क्या आपने यह सुनिश्चित करने के लिए कुछ पंक्तियों को आगे बढ़ाने की कोशिश की है कि आपके पास 'राशि 3' का अद्यतन मूल्य है? क्योंकि जब 'XXX' एक शून्य शून्य है, तो' XXX ?? 0 एम' एक (गैर-शून्य) दशमलव होगा जिसमें 'XXX' का मान होगा यदि यह शून्य न हो, और अन्यथा शून्य शून्य हो। –