C#中的警告CS0120、CS0176、CS0183、CS0618、CS0649、CS8600、CS8601、CS8602、CS8604、CS8625及处理
目录
一、CS0120
二、CS0176
1.解决前
2.解决后
3.解决办法
三、CS0183
四、CS0618
五、CS8600
六、CS8602
七、CS8622
1. 解决前:
2. 解决后:
3.解决方法:
八、CS8604和CS8625
九、CS0649
十、CS8601
一、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。
九、CS0649
| 严重性 | 代码 | 说明 | 项目 | 文件 | 行 | 禁止显示状态 |
| 警告 | CS0649 | 从未对字段“Form1.columnHeader1”赋值,字段将一直保持其默认值 null | 06 | C:\Users\YCZN_MT\Desktop\测试1\06\06\Form1.cs | 10 | 活 |
private System.ComponentModel.IContainer components=null;
将赋予初始值null即可。
十、CS8601
| 严重性 | 代码 | 说明 | 项目 | 文件 | 行 | 禁止显示状态 |
| 警告 | CS8601 | 可能的 null 引用赋值。 | 06 | C:\Users\YCZN_MT\Desktop\测试1\06\06\Form1.cs | 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
相关文章:
C#中的警告CS0120、CS0176、CS0183、CS0618、CS0649、CS8600、CS8601、CS8602、CS8604、CS8625及处理
目录 一、CS0120 二、CS0176 1.解决前 2.解决后 3.解决办法 三、CS0183 四、CS0618 五、CS8600 六、CS8602 七、CS8622 1. 解决前: 2. 解决后: 3.解决方法: 八、CS8604和CS8625 九、CS0649 十、CS8601 一、CS0120 严重性 代…...
js中声明变量的关键字(const,let,var)
const 特点: const不允许在同一作用域重复声明,块级作用域暂时性死区,在声明之前,该变量是不可用的const声明的是一个只读变量,声明之后不能改变其值,一旦声明必须初始化但是const定义的对象属性是可以修…...
Android13 launcher循环切页
launcher 常规切页:https://blog.csdn.net/a396604593/article/details/125305234 循环切页 我们知道,launcher切页是在packages\apps\Launcher3\src\com\android\launcher3\PagedView.java的onTouchEvent中实现的。 1、滑动限制 public boolean onT…...
Java学习路线第一篇:Java基础(2)
这篇则分享Java学习路线第一part:Java基础(2) 从看到这篇内容开始,你就是被选定的天命骚年,将承担起学完Java基础的使命,本使命为单向契约,你可选择YES或者选择YES。 具体路线安排:…...
网络工程师精华篇,50种网络故障及解决方法大集合
上午好,我的网工朋友。 做网络工程师,自然离不开网络,而日常工作中能搞多少大项目?最常见的其实还是网络故障的处理了。 怎么最高效地排查网络故障?怎么简单几招通网? 今天就从基础的入手,分…...
Unity播放网络视频
using System.Collections; using System.Collections.Generic; using UnityEngine; using Mx.UI; using Mx.Utils; using UnityEngine.UI; using UnityEngine.Video; /// <summary> 视频UI面板 </summary> public class VideoUIForm : BaseUIForm { private …...
SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测
SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测 目录 SCI一区级 | Matlab实现GWO-CNN-LSTM-selfAttention多变量多步时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现GWO-CNN-LSTM-selfAttention灰狼算法优化卷积长短…...
线性分类器--图像表示
整个模型 图像表示 二进制图像 灰度图像 彩色图像 大多数分类算法都要求输入向量! rbg的图像矩阵转列向量 大小为 32X32 的话,图像矩阵转列向量是多少维? 32x32x3 3072 维列向量...
车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构)
车载通信架构 —— 传统车内通信网络FlexRay(较高速度高容错、较灵活拓扑结构) 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,…...
如何在Ubuntu的Linux系统中安装MySQL5.7数据库
前往MySQL数据库官网链接地址下载5.7数据库。 MySQL :: Download MySQL Community Server (Archived Versions)使用ssh的可视化工具将下载的mysql-5.7.40-linux-glibc2.12-x86_64.tar.gz文件上传到Linux服务器,并解压文件 tar -zxvf mysql-5.7.40-linux-glibc2.12-x…...
基于Hadoop的区块链海量数据存储的设计与实现
点我完整下载:基于Hadoop的区块链海量数据存储的设计与实现.docx 基于Hadoop的区块链海量数据存储的设计与实现 Design and Implementation of Mass Data Storage for Blockchain based on Hadoop 目录 目录 2 摘要 3 关键词 4 第一章 引言 4 1.1 研究背景 4 1.2 研…...
运行时错误/缺陷到底是什么缺陷
运行时错误(Run-time Error)是一种跟程序运行状态相关的缺陷。这类缺陷不能通过直接禁用相关特性来屏蔽,而是需要通过分析变量的数值状态来发现可能的异常。简单来说,这些缺陷通常只有当程序执行起来以后,才能逐渐暴露出的缺陷,一…...
应用Web3.0的5种方法提升你的点击量
Web3.0早已成为互联网的全新方向标,为用户带来全新的手机上网感受。它也变成吸引住点击量疯涨的秘密武器。我们将要详细介绍Web3.0的五种使用方法,帮助你更好的了解并应用Web3.0技术性,以提升你的点击量。 1.可靠的身份认证Web3.0技术性提供了…...
计算机服务器中了mallox勒索病毒如何处理,mallox勒索病毒解密文件恢复
科技技术的发展推动了企业的生产运营,网络技术的不断应用,极大地方便了企业日常生产生活,但网络毕竟是一把双刃剑,网络安全威胁一直存在,近期,云天数据恢复中心接到很多企业的求助,企业的计算机…...
408—电子笔记分享
一、笔记下载 链接:https://pan.baidu.com/s/1bFz8IX6EkFMWTfY9ozvVpg?pwddeng 提取码:deng b站视频:408-计算机网络-笔记分享_哔哩哔哩_bilibili 包含了408四门科目(数据结构、操作系统、计算机组成原理、计算机网络)…...
【每日一题】子数组的最小值之和
文章目录 Tag题目来源题目解读解题思路方法一:贡献法单调栈 写在最后 Tag 【贡献法】【单调栈】【数组】【2023-11-27】 题目来源 907. 子数组的最小值之和 题目解读 计算整数数组的连续子数组中最小值的和。 解题思路 本题朴素的解决思想是求出所有的连续子数组…...
【docker】docker总结
一、Docker简介 Docker是开源应用容器引擎,轻量级容器技术。基于Go语言,并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux系统上,也可以实现虚拟化容…...
[英语学习][3][Word Power Made Easy]的精读与翻译优化
[序言] 这次翻译校验, 难度有点大, 原版中英翻译已出现了严重地偏差. 昨晚11点开始阅读如下段落, 花费了1个小时也没有理解原作者的核心表达, 索性睡觉了. 今早学习完朗文单词之后, 9点半开始继续揣摩. 竟然弄到了中午11点30, 终于明白原作者要表达的意思了. 废话不多说&#x…...
使用UIActivityViewController分享图片,没有preview
以前都是用第三方sdk来分享的,最近使用官方的UIActivityViewController来做分享,结果分享图片的时候preview不了分享的图片。 自定义一个继承UIActivityItemProvider的类。关于分享的内容自定义可以自己实现UIActivityItemSource这个协议。首先看看协议的…...
linux安装终端连接工具Tabby
参考:https://zhuanlan.zhihu.com/p/645787655...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
基于ASP.NET+ SQL Server实现(Web)医院信息管理系统
医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上,开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识,在 vs 2017 平台上,进行 ASP.NET 应用程序和简易网站的开发;初步熟悉开发一…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关
在水泥厂的生产流程中,工业自动化网关起着至关重要的作用,尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关,为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多,其中不少设备采用Devicenet协议。Devicen…...
热烈祝贺埃文科技正式加入可信数据空间发展联盟
2025年4月29日,在福州举办的第八届数字中国建设峰会“可信数据空间分论坛”上,可信数据空间发展联盟正式宣告成立。国家数据局党组书记、局长刘烈宏出席并致辞,强调该联盟是推进全国一体化数据市场建设的关键抓手。 郑州埃文科技有限公司&am…...
