2010-08-13 16 views
5

मेरे पास एक स्ट्रिंग सरणी है। मुझे चयनित आइटम सरणी में है या नहीं, इसके आधार पर बटन प्रदर्शित करने की आवश्यकता है। मुझे यह जानने की जरूरत है कि प्रोग्राम को कैसे बताना है "(सरणी नहीं में शामिल हैं (" स्ट्रिंग "))"। कृपया कोई मेरी मदद कर सकता है ?? अग्रिमयदि स्ट्रिंग आइटम स्ट्रिंग सरणी में नहीं है

धन्यवाद

मेरे कोड:

List<string> activationids = new List<string>(); 
    foreach (ModuleActivation moduleactivation in activationid) 
     activationids.Add(moduleactivation.ActivationID); 

    string gvselectActID = GridView1.SelectedRow.Cells[1].Text; 

    if (activationids.Contains(gvselectActID)) 
    { 
     activateInsert.Visible = true; 
     activateUpdate.Visible = false; 
     deactivate.Visible = true; 
    } 
    else if (activationids."NOT" Contains(gvselectActID)) 
    { 
     activateInsert.Visible = false; 
     activateUpdate.Visible = true; 
     deactivate.Visible = false; 
    } 
    else 
    { 
    activateInsert.Visible = false; 
    activateUpdate.Visible = false; 
    deactivate.Visible = false; 
    } 
    } 
+0

आप बूलियन तर्क बेहतर समझने की जरूरत है - 'अगर/else if/निर्माण else' आप परीक्षण हालत आप के साथ कोई मतलब नहीं है। – Oded

उत्तर

2

! का अर्थ है "नहीं"। इसलिए आपको इसे अभिव्यक्ति के सामने रखना होगा जिसे आपको अस्वीकार करने की आवश्यकता है;

!activationids.Contains("blahblah");

हालांकि, यह काफी स्पष्ट है कि यदि activationids.Contains("blahblah")false है, तुम दूसरे मामले में जाने हैं। इसके अलावा, वर्तमान में, आपका तीसरा ब्लॉक (... else { ...) कभी भी हिट नहीं होगा।

10

बदलें:

else if (activationids."NOT" Contains(gvselectActID)) 

else if (!activationids.Contains(gvselectActID)) 
2

को ऐसा करने के दो बहुत ही सरल तरीके हैं:

  1. bool समारोह कॉल की नहीं परिणाम:

    if(!activationids.Contains(gvselectActID))

  2. चेक परिणाम और false

    if(activationids.Contains(gvselectActID) == false)


हालांकि, अगर आप जाँच कर रहे हैं अगर यह पहले if() खंड में यह होता है, कि पहले जिसका अर्थ है की तुलना else क्लॉज को निकाल दिया जाएगा यदि इसमें निहित नहीं है। जांच करने की कोई आवश्यकता नहीं है, और ऐसा कोई तरीका नहीं है कि तीसरा else कभी भी निकाल दिया जाएगा।

2

,, सही या गलत रिटर्न शामिल सौ आप तीन शाखाओं नहीं हो सकता है आप कर सकते हैं बस

if (activationids.Contains(gvselectActID)) // it does contain 
    ... 
else // it does not contain 
    ... 

कोई अन्य संभावनाएं हैं

[मजाक]
अच्छी तरह से यह इस मामले
में काम कर सकता था http://thedailywtf.com/Articles/What_Is_Truth_0x3f_.aspx
[/ मजाक]

+0

अगर (x) {doSomething();} और अगर (! X) {doSomethingElse();} else {नया लॉजिकलबाउंड्स फेंक देंफ्यूविर्स एक्स्प्लेस्ड एक्सेप्शन();} (हालांकि सख्ती से, यदि एक्स को दूसरे थ्रेड से बाहर से बदल दिया गया है, तो तीसरी स्थिति हिट किया जा सकता है)। –

1

यह पर्याप्त होगा:

if (activationids.Contains(gvselectActID)) 
{ 
    // Goes here if condition is true 
    activateInsert.Visible = true; 
    activateUpdate.Visible = false; 
    deactivate.Visible = true; 
} 
else 
{ 
    // Goes here if condition is false 
    activateInsert.Visible = false; 
    activateUpdate.Visible = true; 
    deactivate.Visible = false; 
} 

कोई अन्य संभावित विकल्प नहीं हैं - कोई तीसरी शाखा नहीं हो सकती है।- यह गलत होने के लिए परीक्षण करने के लिए कोई जरूरत नहीं है

if(booleanCondition) 
{} 
else if (!booleanCondition) 
{} 
else 
{} 

परिभाषा के द्वारा के रूप में, यदि booleanCondition गलत है, किसी और शाखा ले जाया जाएगा:

यह कोई मतलब नहीं है।

6

या और भी आसान

bool containsItem=activationids.Contains(gvselectActID); 

activateInsert.Visible = containsItem; 
activateUpdate.Visible = !containsItem; 
deactivate.Visible = containsItem; 
+1

+1: हालांकि यह विशेष रूप से प्रश्न का उत्तर नहीं देता है, यह संपूर्ण रूप से नमूना कोड का सबसे अच्छा तरीका है। – cjk

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