2011-04-15 15 views
7

संभव डुप्लिकेट:
Can’t operator == be applied to generic types in C#?को लागू करने '==' सामान्य पैरामीटर के लिए ऑपरेटर

मैं एक DatabaseLookup {} वर्ग जहां पैरामीटर टी में देखने तरीकों से उपयोग किया जाएगा है कक्षा। लुकअप से पहले, मैं देखना चाहता हूं कि टी पहले से ही

if (T == previousLookupObject) ... 

यह संकलित नहीं करता है। मुझे इस तरह की तुलना करने से रोक रहा है?

+3

'T' सामान्य प्रकार या सामान्य का एक वास्तविक चर की चर्चा करते हुए है। 'टी' आमतौर पर जेनेरिक प्रकार के नाम के रूप में प्रयोग किया जाता है। एक वस्तु नहीं बल्कि एक प्रकार है। प्रकार 'टी' के चर को परिभाषित करने का प्रयास करें। –

+2

और फिर '==' के बजाय 'thisObject.Equals (पिछला LookupObject) 'का उपयोग करें –

उत्तर

16

T टाइप पैरामीटर है। यदि आपका previousLookupObjectType का ऑब्जेक्ट है, तो आपको typeof(T) == previousLookupObject करना होगा।

यदि previousLookupObjectT प्रकार का चर है, तो इसकी तुलना करने के लिए आपको T का वास्तविक ऑब्जेक्ट होना चाहिए। if (previousLookupObject is T):

आप पता लगाने के लिए अगर previousLookupObject प्रकार T की है चाहते हैं, आप is ऑपरेटर का उपयोग करने की आवश्यकता है।

8

T प्रकार है, previousLookupObject एक वस्तु उदाहरण है (मुझे लगता है)। तो आप संतरे से सेब की तुलना कर रहे हैं। इसे आज़माएं:

if (previousLookupObject is T) 
{ 
    ...  
} 
0

previousLookupObject किस प्रकार का है? जेनेरिक प्रकार पैरामीटर प्रकार हैं, और सामान्य ऑब्जेक्ट संदर्भों के रूप में उपयोग नहीं किए जा सकते हैं।

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