2015-03-02 10 views
6

सी # में जांच की जा रही अशक्त के लिए एक VB.NET वस्तु अप्रत्याशित संकलन त्रुटि देता है देता है मेरे पास एक सहयोगी है जिसने बिना किसी समस्या के इसे एक वर्ष में किया है। मेरा सहयोगी विजुअल स्टूडियो 2012 का उपयोग कर रहा है और मैं विजुअल स्टूडियो 2013 का उपयोग कर रहा हूं। क्या यह किसी प्रकार की सेटिंग्स हो सकता है?सी # में जांच की जा रही अशक्त के लिए एक VB.NET वस्तु अप्रत्याशित संकलन त्रुटि

basePackage != nullobject क्यों है?

मुझे पता है कि वीबी.नेट में Nothing है जहां सी # null है।

अद्यतन: BasePackage के अन्य वर्ग से विरासत में मिला: अगर है कि मैं नहीं जानता कि किसी भी तरह से मदद करता है।

Public Shared Operator =([object] As CMSObject, type As System.Type) 
    Return [object].GetType Is type 
End Operator 

Public Shared Operator <>([object] As CMSObject, type As System.Type) 
    Return [object].GetType IsNot type 
End Operator 

Public Shared Operator =([object] As CMSObject, o As Object) 
    Return [object].GetType Is o 
End Operator 

Public Shared Operator <>([object] As CMSObject, o As Object) 
    Return [object].GetType IsNot o 
End Operator 

समाधान: जब मैं इन दो ऑपरेटरों outcomment सी # फिर से ठीक काम कर रहा है।

Public Shared Operator =([object] As CMSObject, type As System.Type) 
    Return [object].GetType Is type 
End Operator 

'Public Shared Operator <>([object] As CMSObject, type As System.Type) 
' Return [object].GetType IsNot type 
'End Operator 

Public Shared Operator =([object] As CMSObject, o As Object) 
    Return [object].GetType Is o 
End Operator 

'Public Shared Operator <>([object] As CMSObject, o As Object) 
' Return [object].GetType IsNot o 
'End Operator 

अंतिम समाधान VB.NET में जोड़ा गया प्रकार। तब सी # कास्ट करने की कोई ज़रूरत नहीं है।

Public Shared Operator =([object] As CMSObject, type As System.Type) **As Boolean** 
    Return [object].GetType Is type 
End Operator 

Public Shared Operator <>([object] As CMSObject, type As System.Type) **As Boolean** 
    Return [object].GetType IsNot type 
End Operator 

Public Shared Operator =([object] As CMSObject, o As Object) **As Boolean** 
    Return [object].GetType Is o 
End Operator 

Public Shared Operator <>([object] As CMSObject, o As Object) **As Boolean** 
    Return [object].GetType IsNot o 
End Operator 
+0

'GetFromID' का हस्ताक्षर वास्तव में वीबी में कैसा दिखता है? –

+0

सार्वजनिक साझा फ़ंक्शन GetFromID (ByVal jobID पूर्णांक के रूप में) बेसपैकेज – radbyx

+0

'बेसपैकेज' कैसा दिखता है? क्या इसमें कोई ऑपरेटर है? – CodeCaster

उत्तर

2

मैं अपने vb नमूना ले लिया है, एक dll में combpiled और # ग यह decompiled है कि आप ऑपरेटरों देखने

public static object operator ==(Class1 @object, Type type) 
{ 
    return (object) (bool) (@object.GetType() == type ? 1 : 0); 
} 

public static object operator !=(Class1 @object, Type type) 
{ 
    return (object) (bool) (@object.GetType() != type ? 1 : 0); 
} 

public static object operator ==(Class1 @object, object o) 
{ 
    return (object) (bool) (@object.GetType() == o ? 1 : 0); 
} 

public static object operator !=(Class1 @object, object o) 
{ 
    return (object) (bool) (@object.GetType() != o ? 1 : 0); 
} 

तो, यह सिर्फ अजीब ऑपरेटर अधिभार हस्ताक्षर की वजह से है कैसे।

आप टिप्पणी की, "बराबर नहीं" ऑपरेटरों, अब यह काम करने लगता है, लेकिन आप के रूप में टिप्पणी में सुझाव दिया, निर्दिष्ट करने के लिए, जब आप की तरह

if ((basePackage == null)) 
// etc. 

समाधान होगा कुछ लिख ही त्रुटि प्राप्त होगी आपकी बूलियन के रूप में ऑपरेटर अधिभार हस्ताक्षर।

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