C#中的警告CS0120、CS0176、CS0183、CS0618、CS8600、CS8602、CS8604、CS8625及处理
目录
一、CS0120
二、CS0176
1.解决前
2.解决后
3.解决办法
三、CS0183
四、CS0618
五、CS8600
六、CS8602
七、CS8622
1. 解决前:
2. 解决后:
3.解决方法:
八、CS8604和CS8625
一、CS0120
| 严重性 | 代码 | 说明 | 项目 | 文件 | 行 | 禁止显示状态 |
| 错误 | CS0120 | 对象引用对于非静态的字段、方法或属性“Program.CreateXmlFromDatabase()”是必需的 | 10_2 | E:\C#_TM\chapter15\10_2\10_2\Program.cs | 31 | 活动 |
static void Main(string[] args)
{CreateXmlFromDatabase();
}
解决办法有两种:
- 将引用的方法new一个对象出来。
- 将引用的方法改成static静态方法,或者引用对应版本的方法。
二、CS0176
| 严重性 | 代码 | 说明 | 项目 | 文件 | 行 | 禁止显示状态 |
| 错误 | CS0176 | 无法使用实例引用来访问成员“Students.SubscribeToRing(SchoolRing)”;请改用类型名来限定它 | 09_1 | E:\C#_TM\chapter17\09_1\Program.cs | 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] //添加,以解除CS0618static void Main(string[] args){if (args is null) //解除IDE0060{throw new ArgumentNullException(nameof(args));}string stra = "AI时代"; //声明一个字符串变量stra并初始化string strb; //声明一个字符串变量strb//使用String类的Copy方法,复制字符串stra并赋值给strbstrb = String.Copy(stra); //String.Copy(string)已过时,CS0618Console.WriteLine(strb); //输出字符串strbConsole.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 | C:\Users\YCZN_MT\Desktop\测试1\10_3\10_3\Program.cs | 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); //警告CS8602Console.WriteLine(person.MiddleName!.Length); //没有警告
}
这个 ! 运算符其实就是关闭了编译器的空检查。
七、CS8622
| 严重性 | 代码 | 说明 | 项目 | 文件 | 行 | 禁止显示状态 |
| 警告 | CS8622 | “void Students.SchoolJow(object sender, EventArgs e)”的参数“sender”类型中引用类型的为 Null 性与目标委托“EventHandler”不匹配(可能是由于为 Null 性特性)。 | 09_1 | E:\C#_TM\chapter17\09_1\Program.cs | 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。
相关文章:
C#中的警告CS0120、CS0176、CS0183、CS0618、CS8600、CS8602、CS8604、CS8625及处理
目录 一、CS0120 二、CS0176 1.解决前 2.解决后 3.解决办法 三、CS0183 四、CS0618 五、CS8600 六、CS8602 七、CS8622 1. 解决前: 2. 解决后: 3.解决方法: 八、CS8604和CS8625 一、CS0120 严重性 代码 说明 项目 文件 行…...
CSS:浏览器设置placeholder样式 / 微信小程序设置placeholder样式
一、web 设置placeholder 设置浏览器的placeholder样式 ::-webkit-input-placeholder { /* WebKit browsers */color: #999; } :-moz-placeholder { /* Mozilla Firefox 4 to 18 */color: #999; } ::-moz-placeholder { /* Mozilla Firefox 19 */color: #999; } :-ms-input-p…...
升级python后sudo apt-get update报错
sudo apt-get update 报错: sh: /usr/lib/cnf-update-db: /usr/bin/python3.7.5: bad interpreter: No such file or directory Reading package lists... Done E: Problem executing scripts APT::Update::Post-Invoke-Success if /usr/bin/test -w /var/lib/c…...
应用可观测性OpenTelemetry简介
应用可观测性OpenTelemetry简介 OpenTelmetry遥测方案可观测性三支柱日志 Logs指标跟踪 什么是OpenTelemetryOpenTelemetry架构和组件OpenTelemetry与OpenCensus、OpenTracing是什么关系 OpenTelmetry遥测方案 可观测性三支柱 日志 Logs 日志是特定事件在特定时间点发生的文本…...
install pnpm : 无法加载文件的解决办法
问题描述 我在使用pnpm的时候报错 PS D:\emss\pure-admin-backend> pnpm install pnpm : 无法加载文件 C:\Users\RD-16\AppData\Roaming\npm\pnpm.ps1。未对文件 C:\Users\RD-16\AppData\Roaming\npm\pnpm.ps1 进行数字签名。无法在当前系统上运 行该脚本。有关运行脚本和设…...
【Python百宝箱】Python数据探险:Excel与数据科学的完美结合
前言 在当今信息爆炸的时代,数据处理和分析已经成为各行各业不可或缺的一部分。在众多数据处理工具中,Python以其简洁而强大的语法成为数据科学家和分析师的首选之一。本文将深入探讨与电子表格处理相关的Python库,介绍它们的功能、应用场景…...
外贸分享|如何从外贸小白成长为大咖?这10件事值得你坚持做
外贸成功不是一朝一夕的事,而是需要有充分的准备和持续的努力。作为一位有着丰富经验的外贸人员,我总结了成功的秘诀,分享了一个优秀的外贸人应该做好的10项工作。 1 找不到客户怎么办? 有很多各种各样的原因值得思考:…...
深度学习之六(自编码器--Autoencoder)
概念 自编码器(Autoencoder)是一种神经网络架构,用于无监督学习和数据的降维表示。它由两部分组成:编码器(Encoder)和解码器(Decoder)。 结构: 编码器(Encoder): 接收输入数据并将其压缩为潜在表示(latent representation),通常比输入数据的维度要低。编码器的…...
Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/3)
博主介绍:Java领域优质创作者,博客之星城市赛道TOP20、专注于前端流行技术框架、Java后端技术领域、项目实战运维以及GIS地理信息领域。 🍅文末获取源码下载地址🍅 👇🏻 精彩专栏推荐订阅👇🏻…...
Vim 一下日志文件,Java 进程没了?
一次端口告警,发现 java 进程被异常杀掉,而根因竟然是因为在问题机器上 vim 查看了 nginx 日志。下面我将从时间维度详细回顾这次排查,希望读者在遇到相似问题时有些许启发。 时间线 15:19 收到端口异常 odin 告警。 状态:P1故障 名称:应用端…...
C# Dictionary的使用
在 C# 中,Dictionary 是一种常用的数据结构,用于存储键值对。以下是一些常见的 Dictionary 操作: 创建和初始化一个 Dictionary 可以使用以下代码创建并初始化一个 Dictionary: Dictionary<string, int> dict new Dicti…...
解决DaemonSet没法调度到master节点的问题
最近在kubernetes部署一个springcloud微服务项目,到了最后一步部署边缘路由:使用nginx-ingress和traefik都可以,必须使用DaemonSet部署,但是发现三个节点,却总共只有两个pod。 换句话说, DaemonSet没法调度…...
2023.11.20 关于 Spring MVC 详解
目录 MVC 工作流程 Spring MVC 掌握三个功能 创建 Spring MVC 项目 推荐安装插件 EditStarters 基础注解 RequestMapping 指定 GET 和 POST 方法类型 ResponseBody 获取参数 传递 单个 或 多个参数 参数重命名 RequestParam 接收 JSON 对象 RequestBody 获取 …...
救命~终于找到一款好看又舒适的家居服了
暖乎乎的软糯家居服 简直不要太好看太舒服了 双层舒棉绒舒适又暖和 防风收口设计,时尚与实用性兼具 经典版型不挑人穿 居家外出都可哦!!...
C#每天复习一个重要小知识day5:枚举与switch是天生一对
因为枚举一般用来表示条件和类型等等,所以它一般用条件分支来表现。所以枚举与switch是天生一对,因为很方便。(用if语句也可,但是没switch方便) 简单的举例: namespace 精细练习 {enum E_Player {Main,Ot…...
idea修改行号颜色
前言 i当idea用了深色主题后,发现行号根本看不清,或者很模糊 例如下面这样 修改行号颜色 在IntelliJ IDEA中,你可以根据自己的喜好和需求定制行号的颜色。下面是修改行号颜色的步骤: 打开 IntelliJ IDEA。 转到 “File”&…...
U-boot(四):start_armboot
本文主要探讨210的uboot启动的第二阶段,主要函数为start_armboot。 uboot 一阶段初始化SoC内部部件(看门狗、时钟等),初始化DDR,重定位 二阶段初始化其余硬件(iNand、网卡芯片)以及命令、环境变量等 启动打印硬件信息,进入bootdelay,读秒完后执行bootc…...
.Net面试题4
1.请解释一下泛型(Generics)在C#中的作用。 泛型是一种将数据类型参数化的机制,使得代码可以在编译时具有更强的类型安全性和灵活性。C#中的泛型可以用于类、接口、方法等的定义和实例化。泛型允许在编写代码时使用具有不同实参的类型&#x…...
python 列表插入数据的 四种方法 append insert extend 切片赋值
append insert 插入单个数据 append 加到末尾,insert 加到指定位置 extend、切片方式插入多个数据 extend 加到末尾,切片加到指定位置 my_list [1, 2, 3] my_list.append(4) print(my_list) # 输出: [1, 2, 3, 4]my_list [1, 2, 3] my_list.insert(…...
C++中std::string的=,+,+=使用过程中的问题
1. 调用构造函数时的运算符不支持int,char类型的操作数 string str1 a; //error 这是一个构造函数。C中string是一个类,内部封装了char *来管理这个字符串。 string的构造函数: string() // 创建一个空的字符串string(const char * s)…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
【kafka】Golang实现分布式Masscan任务调度系统
要求: 输出两个程序,一个命令行程序(命令行参数用flag)和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽,然后将消息推送到kafka里面。 服务端程序: 从kafka消费者接收…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
