2009-02-09 12 views
48

यह सिर्फ ठीक काम करता है:जांच करें कि वस्तु प्रकार की नहीं है (! के लिए बराबर = "है") - सी #

protected void txtTest_Load(object sender, EventArgs e) 
    { 
     if (sender is TextBox) {...} 

    } 

वहाँ अगर इस एक पाठ बॉक्स, एक किसी तरह का नहीं है की जाँच करने के लिए एक रास्ता है बराबर! = "है" के लिए?

कृपया, के लिए और {} तर्क चलती ओर संकेत नहीं करते :)

उत्तर

129

यह एक तरीका है:

if (!(sender is TextBox)) {...} 
+3

(प्रेषक टेक्स्टबॉक्स == झूठा है)। इस तरह कम गुंजाइश वाक्यविन्यास। –

+5

@hmemcpy: व्यक्तिगत रूप से, जब भी मैं एक बुलियन स्थिरता की तुलना देखता हूं तो मैं क्रिंग करता हूं। शायद मेरी सी पृष्ठभूमि के माध्यम से दिखा रहा है ... फिर भी, मेरी त्वचा क्रॉल करता है, और कोई तरीका नहीं है कि मैं इसे कोड में अकेला छोड़ दूंगा, मैं संपादन कर रहा था। – Shog9

+0

@IgalTabachnik imo अगर आप तर्कसंगत रूप से उल्लिखित बयानों को स्पष्टता के लिए लिखने जा रहे हैं कि यह लिखने के लिए और अधिक स्पष्ट हो जाता है कि 'अगर (झूठी == प्रेषक टेक्स्टबॉक्स है) ' –

6

सकता है आप भी अधिक वर्बोज़ "पुराने" तरीके से करना से पहले नहीं is कीवर्ड:

if (sender.GetType() != typeof(TextBox)) { // ... } 
+11

निश्चित रूप से, आप यह कर सकते हैं, लेकिन ध्यान दें कि "है" कीवर्ड टेक्स्टबॉक्स से प्राप्त किसी ऑब्जेक्ट से मेल खाता है, जबकि इस प्रकार() चेक केवल टेक्स्टबॉक्स से मेल खाता है। – mquander

+1

आह, मुझे यह नहीं पता था। हर दिन कुछ नया सीखें :) –

-1

इसे आज़माएं।

var cont= textboxobject as Control; 
if(cont.GetType().Name=="TextBox") 
{ 
    MessageBox.show("textboxobject is a textbox"); 
} 
+0

शुरुआती 'नियंत्रण 'रेखा क्यों है, क्या यह' ऑब्जेक्ट' पर' GetType() 'की तुलना में अलग व्यवहार करता है? इसके अलावा, इस तरह के कुछ के लिए स्ट्रिंग तुलना रिफैक्टर अनुकूल कोड नहीं है। – Stijn

-1

आप उपयोग की तरह विरासत हैं:

public class BaseClass 
{} 
public class Foo : BaseClass 
{} 
public class Bar : BaseClass 
{} 

... अशक्त प्रतिरोधी

if (obj?.GetType().BaseType != typeof(Bar)) { // ... } 

या

if (!(sender is Foo)) { //... } 
1

दो प्रसिद्ध यह करने के तरीके हैं :

1) का उपयोग करते हुए ऑपरेटर है:

if (!(sender is TextBox)) {...} 

2) ऑपरेटर के रूप में उपयोग करना (उपयोगी अगर आप भी) पाठ बॉक्स उदाहरण के साथ काम करने की जरूरत है: इस विशेष स्थिति मैं अगर पसंद करते हैं के लिए

var textBox = sender as TextBox; 
if (sender == null) {...} 
संबंधित मुद्दे