当前位置: 首页 > news >正文

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 找不到客户怎么办? 有很多各种各样的原因值得思考&#xff1a…...

深度学习之六(自编码器--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# 中&#xff0c;Dictionary 是一种常用的数据结构&#xff0c;用于存储键值对。以下是一些常见的 Dictionary 操作&#xff1a; 创建和初始化一个 Dictionary 可以使用以下代码创建并初始化一个 Dictionary&#xff1a; Dictionary<string, int> dict new Dicti…...

解决DaemonSet没法调度到master节点的问题

最近在kubernetes部署一个springcloud微服务项目&#xff0c;到了最后一步部署边缘路由&#xff1a;使用nginx-ingress和traefik都可以&#xff0c;必须使用DaemonSet部署&#xff0c;但是发现三个节点&#xff0c;却总共只有两个pod。 换句话说&#xff0c; DaemonSet没法调度…...

2023.11.20 关于 Spring MVC 详解

目录 MVC 工作流程 Spring MVC 掌握三个功能 创建 Spring MVC 项目 推荐安装插件 EditStarters 基础注解 RequestMapping 指定 GET 和 POST 方法类型 ResponseBody 获取参数 传递 单个 或 多个参数 参数重命名 RequestParam 接收 JSON 对象 RequestBody 获取 …...

救命~终于找到一款好看又舒适的家居服了

暖乎乎的软糯家居服 简直不要太好看太舒服了 双层舒棉绒舒适又暖和 防风收口设计&#xff0c;时尚与实用性兼具 经典版型不挑人穿 居家外出都可哦&#xff01;&#xff01;...

C#每天复习一个重要小知识day5:枚举与switch是天生一对

因为枚举一般用来表示条件和类型等等&#xff0c;所以它一般用条件分支来表现。所以枚举与switch是天生一对&#xff0c;因为很方便。&#xff08;用if语句也可&#xff0c;但是没switch方便&#xff09; 简单的举例&#xff1a; namespace 精细练习 {enum E_Player {Main,Ot…...

idea修改行号颜色

前言 i当idea用了深色主题后&#xff0c;发现行号根本看不清&#xff0c;或者很模糊 例如下面这样 修改行号颜色 在IntelliJ IDEA中&#xff0c;你可以根据自己的喜好和需求定制行号的颜色。下面是修改行号颜色的步骤&#xff1a; 打开 IntelliJ IDEA。 转到 “File”&…...

U-boot(四):start_armboot

本文主要探讨210的uboot启动的第二阶段&#xff0c;主要函数为start_armboot。 uboot 一阶段初始化SoC内部部件(看门狗、时钟等),初始化DDR,重定位 二阶段初始化其余硬件(iNand、网卡芯片)以及命令、环境变量等 启动打印硬件信息,进入bootdelay,读秒完后执行bootc…...

.Net面试题4

1.请解释一下泛型&#xff08;Generics&#xff09;在C#中的作用。 泛型是一种将数据类型参数化的机制&#xff0c;使得代码可以在编译时具有更强的类型安全性和灵活性。C#中的泛型可以用于类、接口、方法等的定义和实例化。泛型允许在编写代码时使用具有不同实参的类型&#x…...

python 列表插入数据的 四种方法 append insert extend 切片赋值

append insert 插入单个数据 append 加到末尾&#xff0c;insert 加到指定位置 extend、切片方式插入多个数据 extend 加到末尾&#xff0c;切片加到指定位置 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&#xff0c;char类型的操作数 string str1 a; //error 这是一个构造函数。C中string是一个类&#xff0c;内部封装了char *来管理这个字符串。 string的构造函数&#xff1a; string() // 创建一个空的字符串string(const char * s)…...

别再混淆了!一文搞懂OpenHarmony NAPI中的同步、回调与Promise接口(附代码对比)

OpenHarmony NAPI接口设计实战&#xff1a;同步、回调与Promise的黄金选择法则 当你在OpenHarmony生态中封装一个底层功能时&#xff0c;总会面临这个灵魂拷问&#xff1a;该用同步接口、回调函数还是Promise&#xff1f;这个看似简单的选择背后&#xff0c;藏着性能、可维护性…...

从timerfd到epoll:手把手教你打造Linux C++高性能定时器管理器

从timerfd到epoll&#xff1a;构建Linux C高性能定时器管理器的工程实践 在游戏服务器、物联网网关或高频交易系统中&#xff0c;定时器管理往往是性能瓶颈的关键所在。想象一下&#xff0c;当你的服务器需要同时处理数万个玩家技能冷却、状态刷新或订单超时检测时&#xff0c;…...

【Python基础】零基础入门到实战,这一篇就够了!(附详细代码)

前言 大家好&#xff0c;我是jifeng&#xff0c;今天给大家带来一篇全网最贴心的Python保姆级入门教程。 在这个AI与大数据爆发的时代&#xff0c;“人生苦短&#xff0c;我用Python” 早已不仅仅是一句口号。无论是Web开发、数据分析、人工智能还是日常办公自动化&#xff0…...

告别Techpoint和Nextchip!实测国产XS9922A/B芯片在车载DVR上的完整替换流程

国产XS9922A/B芯片在车载DVR中的实战替换指南 最近两年&#xff0c;车载电子行业面临着一个共同的挑战&#xff1a;进口芯片供应不稳定导致项目延期风险陡增。作为一名长期从事车载DVR设计的硬件工程师&#xff0c;我亲历了从Techpoint TP9930到国产XS9922B的完整替换过程。这…...

3个核心功能解决B站视频下载难题:BilibiliDown完全指南

3个核心功能解决B站视频下载难题&#xff1a;BilibiliDown完全指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/…...

从攻击者视角看防御:手把手复现一次MSF对Windows的渗透,并教你如何用Sysmon和防火墙规则发现它

从攻击者视角构建防御体系&#xff1a;基于Sysmon的Windows渗透检测实战 当安全团队真正理解攻击者的思维和工具链时&#xff0c;防御才能做到有的放矢。本文将采用"以攻代防"的视角&#xff0c;通过完整复现一次典型的渗透过程&#xff0c;深入剖析如何利用Sysmon和…...

AI Agent开发6种实用设计模式:小白程序员必备收藏,快速提升实战能力!

本文介绍了AI Agent开发的六种核心设计模式&#xff0c;包括ReAct、Tool Use、Reflection、Planning、Multi-Agent和Human-in-the-Loop&#xff0c;详细讲解了每种模式的核心思想、优缺点、适用场景及Java代码实现。文章强调了选择合适模式的重要性&#xff0c;并建议从简单的R…...

别再被XML命名空间坑了!手把手教你用JAXB解析带命名空间的XML(附完整代码)

深度解析JAXB处理XML命名空间的五种实战方案 金融报文、Web服务响应、企业级数据交换——在这些需要处理标准化XML格式的场景中&#xff0c;命名空间就像一把双刃剑。它本是为了解决元素命名冲突而设计&#xff0c;却常常成为Java开发者使用JAXB解析时的"拦路虎"。当…...

Mac/Linux用户的应急工具箱:当老板发来一个加密zip忘了密码,用fcrackzip的3种找回方法

Mac/Linux用户的应急工具箱&#xff1a;用fcrackzip破解加密zip的3种实战策略 上周五下午4点52分&#xff0c;市场部的Lisa突然在Slack上弹出一条消息&#xff1a;"紧急&#xff01;季度财报分析.zip的密码老板记不清了&#xff0c;能帮帮忙吗&#xff1f;" 这种场景…...

别让Claude Skill变‘话痨’:从官方最佳实践看如何写出‘省token’的高效技能

从Claude Skill设计哲学看高效AI交互的成本控制艺术 在AI技术快速迭代的今天&#xff0c;大型语言模型(LLM)的应用已经从简单的对话扩展到复杂的任务自动化。作为这一领域的先驱之一&#xff0c;Claude Skill系统为开发者提供了构建专业化AI能力的平台。然而&#xff0c;随着应…...