一、CS0120
严重性 |
说明 |
行 |
禁止显示状态 |
|||
CS0120 |
10_2 |
31 |
活动 |
static void Main(string[] args)
{
CreateXmlFromDatabase();
}
解决办法有两种:
二、CS0176
严重性 |
说明 |
行 |
禁止显示状态 |
|||
CS0176 |
无法使用实例引用来访问成员“Students.SubscribeToRing(SchoolRing)”;请改用类型名来限定它 |
09_1 |
13 |
活动 |
1.解决前
static void Main(string[] args)
{
SchoolRing sr = new(); //创建学校铃声类的对象
Students student = new();
student.SubscribeToRing(sr); //订阅铃声
Console.Write("请输入打铃参数(1:表示打上课铃;2:表示打下课铃):");
sr.Jow(Convert.ToInt32(Console.ReadLine())); //事件只能由发布者触发
Console.ReadLine();
}
2.解决后
static void Main(string[] args)
{
SchoolRing sr = new(); //创建学校铃声类的对象
Students.SubscribeToRing(sr); //订阅铃声
Console.Write("请输入打铃参数(1:表示打上课铃;2:表示打下课铃):");
sr.Jow(Convert.ToInt32(Console.ReadLine())); //事件只能由发布者触发
Console.ReadLine();
}
3.解决办法
用类代替实例,这个是静态方法,需要直接使用类名使用,无需创建实例。
三、CS0183
如果条件语句的计算结果始终为 true,则不需要条件语句。 当尝试使用 is 运算符评估类型时,会出现此警告。 如果计算结果是值类型,则不需要进行检查。
is操作符只考虑引用转换、装箱转换和取消装箱转换。下面的程序都会发生编译时错误(CTE):已知表达式将始终是 true 或始终是 false。
int i = 0; //声明整型变量i
object obj = i; //把值类型转换为引用类型,装箱操作解除CS0183
bool vi = obj is int; //is只能用于引用转换、装箱转换和取消装箱转换
bool result = vi; //判断i是否为整型,警告IDE0150
Console.WriteLine(result); //输出结果
Console.ReadLine();
解除办法:对is操作的变量进行装箱操作,然后is操作装箱后的变量。
四、CS0618
“string.Copy(string)”已过时:“This API should not be used to create mutable strings. See https://go.microsoft.com/fwlink/?linkid=2084035 for alternatives.”
解除CS0618:在Main()方法前添加[Obsolete]。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Test15
{
class Program
{
[Obsolete] //添加,以解除CS0618
static void Main(string[] args)
{
if (args is null) //解除IDE0060
{
throw new ArgumentNullException(nameof(args));
}
string stra = "AI时代"; //声明一个字符串变量stra并初始化
string strb; //声明一个字符串变量strb
//使用String类的Copy方法,复制字符串stra并赋值给strb
strb = String.Copy(stra); //String.Copy(string)已过时,CS0618
Console.WriteLine(strb); //输出字符串strb
Console.ReadLine();
}
}
}
五、CS8600
将 null 文字或可能的 null 值转换为不可为 null 的类型。
- 用string?解除CS8600
string? name = Console.ReadLine(); //解除CS8600
- 用??string.Empty解除CS8600
string str = Console.ReadLine() ?? string.Empty; //解除CS8600
- 用var解除CS8600
var name = Console.ReadLine(); //解除CS8600
为了参考和进一步研究,您收到此错误是因为您在项目中启用了可为空的引用类型docs.microsoft.com/en-us/dotnet/csharp/nullable-references。 Console.ReadLine 返回一个可以为空的字符串 (string?),您尝试将其分配给一个不可为空的字符串变量。
六、CS8602
严重性 |
说明 |
行 |
禁止显示状态 |
|||
警告 |
CS8602 |
解引用可能出现空引用。 |
10_3 |
118 |
活动 |
若要删除这些警告,需要在取消引用之前添加代码,将该变量的“null 状态”更改为“不为 null”。 集合初始值设定项警告可能更难以发现。 初始化表达式向集合添加元素时,编译器检测到该集合可能为 null。
void WriteMessageLength(string? message)
{
if (message is not null) //if()解除CS8602
{
Console.WriteLine(message.Length); //CS8602
}
}
void LogPerson(Person person)
{
Console.WriteLine(person.MiddleName.Length); //警告CS8602
Console.WriteLine(person.MiddleName!.Length); //没有警告
}
七、CS8622
严重性 |
代码 |
说明 |
行 |
禁止显示状态 |
||
警告 |
CS8622 |
“void Students.SchoolJow(object sender, EventArgs e)”的参数“sender”类型中引用类型的为 Null 性与目标委托“EventHandler”不匹配(可能是由于为 Null 性特性)。 |
09_1 |
55 |
活动 |
1. 解决前:
public static void SchoolJow(object sender, EventArgs e)
{
if (((RingEventArgs)e).RingKind == 2) //打了下课铃
{
Console.WriteLine("同学们开始课间休息!");
}
else if (((RingEventArgs)e).RingKind == 1) //打了上课铃
{
Console.WriteLine("同学们开始认真学习!");
}
}
2. 解决后:
public static void SchoolJow(object? sender, EventArgs e)
{
略
}
3.解决方法:
在提示里的object后面加一个?
八、CS8604和CS8625
“int int.Parse(string s)”中的形参“s”可能传入 null 引用实参。
用??string.Empty解除CS8604
int year = Int32.Parse(str?? string.Empty); //解除CS8604
用if语句解除CS8604
string str = Console.ReadLine() ?? string.Empty; //获取用户输入的年份
if (str != null) //解决CS8604
{
int year = Int32.Parse(str); //将输入的年份转换成int类型
//计算输入的年份是否为闰年
bool isleapyear = ((year % 400) == 0) || (((year % 4) == 0) && ((year % 100) != 0));
//利用条件运算符输入“是”或者“不是”
string yesno = isleapyear ? "是" : "不是";
Console.WriteLine("{0}年{1}闰年", year, yesno); //输出结果
Console.ReadLine();
}
double d = double.Parse(Console.ReadLine() ?? string.Empty);//解除CS8604
或者在文件中增加#nullable disable也解除CS8604。
九、CS0649
严重性 |
代码 |
说明 |
行 |
禁止显示状态 |
||
警告 |
CS0649 |
06 |
10 |
活 |
private System.ComponentModel.IContainer components=null;
将赋予初始值null即可。
十、CS8601
严重性 |
代码 |
说明 |
项目 |
行 |
禁止显示状态 |
|
警告 |
CS8601 |
可能的 null 引用赋值。 |
06 |
54 |
活动 |
//解决之前:
private readonly ListView? listView1;
private readonly ColumnHeader? columnHeader1;
private readonly ColumnHeader? columnHeader2;
private readonly ColumnHeader? columnHeader3;
private readonly ColumnHeader? columnHeader4;
listView1 = new ListView();
{
listView1.Columns.AddRange(
[
columnHeader1,
columnHeader2,
columnHeader3,
columnHeader4
]);
//解决之后:
private readonly ListView? listView1;
private readonly ColumnHeader? columnHeader1;
private readonly ColumnHeader? columnHeader2;
private readonly ColumnHeader? columnHeader3;
private readonly ColumnHeader? columnHeader4;
columnHeader1 = new ColumnHeader();
{
columnHeader1.Text = "文件名";
columnHeader1.Width = 70;
}
columnHeader2 = new ColumnHeader();
{
columnHeader2.Text = "路径";
columnHeader2.Width = 140;
}
columnHeader3 = new ColumnHeader();
{
columnHeader3.Text = "大小";
columnHeader3.Width = 40;
}
columnHeader4 = new ColumnHeader();
{
columnHeader4.Text = "创建日期";
columnHeader4.Width = 60;
}
listView1 = new ListView();
{
listView1.Columns.AddRange(
[
columnHeader1,
columnHeader2,
columnHeader3,
columnHeader4
]);
//解决办法:给出现的警告的参数定义并实例化,不让参数为null
原文地址:https://blog.csdn.net/wenchm/article/details/134606735
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_3028.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!