قيم الفارغة التعداد قيم الفارغة نوع السؤال
سؤال
وأحصل على خطأ الترجمة التالية مع شفرة المصدر التالية:
وتجميع خطأ:
ونوع من التعبير الشرطي لا يمكن تحديده لأنه لا يوجد التحويل الضمني بين '' و 'MyEnum'
ورمز المصدر
public enum MyEnum
{
Value1, Value2, Value3
}
public class MyClass
{
public MyClass() {}
public MyEnum? MyClassEnum { get; set; }
}
public class Main()
{
object x = new object();
MyClass mc = new MyClass()
{
MyClassEnum = Convert.IsDBNull(x) : null ?
(MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true)
};
}
وكيف يمكنني حل هذا الخطأ؟
المحلول
وأعتقد أن كل ما تحتاجه للادلاء نتيجة Enum.Parse
إلى MyEnum?
. هذا هو الحال مع [إينتس] قيم الفارغة على الأقل. منها مثلا:
int? i;
i = shouldBeNull ? null : (int?) 123;
وهكذا:
MyClassEnum = Convert.IsDBNull(x)
? null
: (MyEnum?) Enum.Parse(typeof(MyEnum), x.ToString(), true)
نصائح أخرى
وهناك خطأ في التعليمات البرمجية: موقف ':' و '؟' يجب أن يتم تبادلها:
MyClassEnum = Convert.IsDBNull(x) ? null :
(MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true)
وراجع للشغل:
وبقدر ما أعرف، والطريقة الموصى بها هي لاستخدام التعداد عنصر اسمه 'بلا' بدلا من التعداد قيم الفارغة، منها مثلا:
public enum MyEnum
{
None, Value1, Value2, Value3
}
و
MyClassEnum = Convert.IsDBNull(x) ? MyEnum.None :
(MyEnum) Enum.Parse(typeof(MyEnum), x.ToString(), true);
وأعتقد أنك سوف تحتاج فقط للادلاء النتيجة إلى (MyEnum؟) بدلا من (MyEnum)؟
لا تنتمي إلى StackOverflow