2011-05-26 6 views
5

के लिए डिफ़ॉल्ट मान का उपयोग न करें, मैं दो टेक्स्ट फ़ील्ड्स का परिणाम लेना चाहता हूं, बटन दबाए जाने पर उन्हें जोड़ना और परिणाम प्रदर्शित करना। हालांकि, अगर एक या दोनों फ़ील्ड खाली हैं, तो मैं कोई परिणाम नहीं दिखाना चाहता हूं।एएसपी.नेट में सी # का उपयोग करके डबल

अभी दोनों फ़ील्ड खाली होने पर परिणाम के रूप में 0 प्राप्त करते रहेंगे। मुझे पूरा यकीन है कि ऐसा इसलिए है क्योंकि दो इनपुट नंबर (युगल) को डिफ़ॉल्ट 0 असाइन किया जा रहा है। मैं खाली फ़ील्ड की जांच कैसे कर सकता हूं?

यह मेरे नियंत्रक में मेरी विधि है।

[HttpPost] 
    public ActionResult French(FrenchModel model, string returnUrl) 
    { 

     switch (model.operation) 
     { 
      case 1: 
       model.result = model.numberOne + model.numberTwo; 
       break; 
      case 2: 
       model.result = model.numberOne - model.numberTwo; 
       break; 
      case 3: 
       model.result = model.numberOne * model.numberTwo; 
       break; 
      case 4: 
       model.result = model.numberOne/model.numberTwo; 
       break; 
     } 


     return View(model); 
    } 

उत्तर

11

डबल्स मूल्य प्रकार हैं और इस प्रकार शून्य या "खाली" को असाइन नहीं किया जा सकता है। यदि आप यह क्षमता चाहते हैं, तो एक निरर्थक डबल का उपयोग करने का प्रयास करें। या तो Nullable<double> या double? काम करना चाहिए।

एक नल मान प्रकार आप अगर असाइन नहीं किए गए 0 को अशक्त के लिए यह जांच करने के लिए इससे पहले कि आप इसका इस्तेमाल करते हैं या जोखिम एक NullReferenceExceptiondouble जबकि चूक की आवश्यकता होगी का उपयोग कर, ध्यान रखें।

+0

धन्यवाद। मैंने अपना "डबल" "डबल" स्विच किया, और यह कुछ भी दर्ज नहीं करते समय काम करता है। हालांकि, मैं त्रुटियों की जांच नहीं कर रहा हूं और यह क्रैश नहीं हो रहा है। – Bill

+0

मैं परीक्षण के लिए NullReferenceException में नहीं चला था। मैं यह देखने के लिए एक विधि का परीक्षण कर रहा था कि यह एक डबल के लिए एक नया मान सही ढंग से असाइन कर रहा था या नहीं। इसका परीक्षण करने के लिए, मैंने डिफ़ॉल्ट (डबल) के खिलाफ जांच की जो केवल इस वर्ग के कुछ तरीकों के लिए काम करता था (मैंने कक्षा नहीं बनाई थी या इसके स्रोत तक पहुंच नहीं थी) लेकिन जब मैंने अपनी समस्या मानों को डबल से डबल तक बदल दिया, और बाद में डिफ़ॉल्ट रूप से मेरी तुलना (डबल?), सब एक बार राज्य में सही था। –

4

Double? यानी निरर्थक डबल का उपयोग करें, इसका डिफ़ॉल्ट मान शून्य है और आप केवल एक मान असाइन करेंगे यदि टेक्स्टबॉक्स खाली नहीं है और आप इसे पार्स कर सकते हैं।

2

यह निर्धारित करने का एक तरीका है कि एक या दोनों फ़ील्ड खाली हैं या नहीं। रिफैक्टर के रूप में आपको अपने विशेष चर के साथ आवश्यकता है।

string one = txt1.Text; 
string two = txt2.Text; 

string result = (string.IsNullOrEmpty(one) || string.IsNullOrEmpty(two)) 
       ?string.Empty 
       :double.Parse(one) + double.Parse(two); 
0

अगर बयान आप उपयोग कर सकते हैं:

if (operand1 != 0) { // do something.. } 
    else { // do something.. } 

आप भी इस दूसरे संकार्य के लिए कर सकते हैं।

उदाहरण: https://www.dropbox.com/s/snvonqubqpkue99/Form1.cs?dl=0

संबंधित मुद्दे