Я скопировал часть унаследованного кода, написанного в VB.Net, которые при преобразовании в C# производит следующее:Невозможно преобразовать в ненулевых проблемы преобразования типа vb.net в C#
///<summary>
///Test whether SSAC should be serialized
///</summary>
public virtual bool ShouldSerializeSSAC()
{
if (_shouldSerializeSSAC)
{
return true;
}
return (_sSAC != (SSAC_Type)null);
}
Он бросает ошибка, заявляющая, что она не может преобразовать, потому что она является типом с нулевым значением. Код для ГКПС выглядит следующим образом:
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.81.0"), System.SerializableAttribute()]
public enum SSAC_Type
{
///<remarks/>
A,
///<remarks/>
B,
///<remarks/>
C,
///<remarks/>
D,
///<remarks/>
E,
///<remarks/>
F,
///<remarks/>
G,
///<remarks/>
H,
///<remarks/>
J
}
В VB.Net эта функция следующим образом:
Public Overridable Function ShouldSerializeSSAC() As Boolean
If _shouldSerializeSSAC Then
Return True
End If
Return (_sSAC <> CType(Nothing, SSAC_Type))
End Function
Хотя класс ГКПС был следующим:
<System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.6.81.0"),
System.SerializableAttribute()>
Public Enum SSAC_Type
'''<remarks/>
A
'''<remarks/>
B
'''<remarks/>
C
'''<remarks/>
D
'''<remarks/>
E
'''<remarks/>
F
'''<remarks/>
G
'''<remarks/>
H
'''<remarks/>
J
End Enum
Как может Я обновляю код C#, чтобы исправить эту ошибку?
Означает ли это, что возвращение (_sSAC = (SSAC_Type) нуль!); всегда возвращает первый объект в списке перечислений? – Jay
Нет. Он возвращает логическое значение. Он возвращает true, если _ssac не равен A (0). –
OK Я вижу, где я могу установить SSAC_Type? как обнуляемый, что вы имеете в виду в отношении возврата _sSAC.HasValue? Я не вижу метод HasValue только для HasFlag – Jay