编辑器报警处理

1、warning CS8600: 将 null 文本或可能的 null 值转换为不可为 null 类型。

原代码

string returnedString = Marshal.PtrToStringAuto(pReturnedString, (int)bytesReturned);

处理后的代码

string returnedString = Marshal.PtrToStringAuto(pReturnedString, (int)bytesReturned)!;

简单分析:

IntPtr为不可空类型,方法可输入可空类型,导致编译器检查异常,改为允许可空类型

2、 warning CS8602: 解引用可能出现空引用。

原代码

string local = Marshal.PtrToStringAuto(pReturnedString, (int)bytesReturned).ToString();

处理后的代码

string local = Marshal.PtrToStringAuto(pReturnedString, (int)bytesReturned)!.ToString();

3、 warning CS8625: 无法将 null 字面量转换为非 null 的引用类型。

源代码

uint bytesReturned = GetPrivateProfileString(section, null, null, chars, SIZE, iniFile);

处理后的代码

uint bytesReturned = GetPrivateProfileString(section, null!, null!, chars, SIZE, iniFile);

简单分析

 C#8 起引用类型默认不可为空,除非使用“?”显示地声明这是可空引用类型

你可能感兴趣的:(#,C#,开发语言,c#,VS)