رفع خطای nullable reference types is not available in c# 7.3
میخوام یک Property که برای مدل داده ایم هست رو تغییر بدم به شکلی که Null هم قبول کنه
public string? MyProperty { get; set; }
علامت ؟ برای Null گذاشتم ولی بهم خطا زیر رو میده :
توی اینترنت هم سرچ کردم برای ارتقا نسخه زبان سی شارپ ولی به نتیجه ای نرسیدم
نکته بعدی هم این هستش که اگر نخواسته باشم ورژن رو ارتقا بدم
راه حل این موضوع چی هستش ؟
باتشکر
پاسخ هوش مصنوعی
برای اینکه بتوانید از ویژگی nullable reference types
استفاده کنید و علامت ?
را برای داشتن مقادیر null
بگذارید، باید نسخه زبان C# خود را به 8.0 یا بالاتر ارتقا دهید. در C# 7.3 این ویژگی در دسترس نیست.
اگر نمی خواهید نسخه زبان را ارتقا دهید، می توانید از نوع string
معمولی استفاده کنید و برای مدیریت مقادیر null
از چک ها استفاده کنید. به عنوان مثال:
public string MyProperty { get; set; } = null;
در این حالت، شما نمی توانید به وضوح با علامت ?
مدیریت null
را انجام دهید، اما می توانید در کد خود چک کنید که آیا MyProperty
null
است یا نه.
در نهایت، اگر تصمیم به ارتقا نسخه زبان گرفتید، می توانید با استفاده از dotnet
CLI یا از طریق تنظیمات پروژه در .csproj
، نسخه مورد نظر را تنظیم کنید:
<PropertyGroup>
<LangVersion>8.0</LangVersion>
</PropertyGroup>
خطای nullable reference types is not available in c# 7.3
خطای شما به خاطر ورژن سی شارپ نیست در واقع. متغیرهای از نوع string به صورت پیش فرض خاصیت Nullable رو دارند و دیگه نیازی نیست به صورت Nullable تعریف بشن. شما برای متغیرهایی باید خاصیت Nullable رو تعریف کنید که به صورت پیش فرض این قابلیت رو ندارن.
به مثال های زیر دقت کنید :
//اشتباه
public string? MyProperty { get; set; }
public Nullable<string> MyProperty { get; set; }
//صحیح
public int? MyProperty { get; set; }
public DateTime? MyProperty { get; set; }
public long? MyProperty { get; set; }
در این رابطه می تونید این لینک رو هم مطالعه کنید.
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- حذف کامل یک رکورد در جدول ریلیشن شده
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- مقایسه ساختار دو دیتابیس در Sql Server
- اشکال در ایجاد کلید خارجی در Sql Server
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf