C#中的那些警告该如何去除(完全去除C#警告)
作者:河西石头 发布时间:2023-09-07 20:55:53
标签:c#,警告,去除
前言
一般在c++中没有使用的变量会有警告,C#中也有,在QT中我们利用Q_UNSED可以直接消除这些警告,那么我们在C#中该如何做才能消除这些不必要的警告呢?经过查询微软官方网站发现,有的找到了解决方法,有的仍然一筹莫展,,网络上没有任何关于消除警告的方法,于是只能自己慢慢琢磨,经过一番努力,可以说找到了消除这些警告“钉子户”的方法,这里分享出来,给那些和我一样讨厌看到这些警告的朋友们。
1、在项目配置文件中去掉Nullable描述
2、给变量增加isnull条件判断
void GetMessageLength(string? message)
{
if (message is not null)
{
Console.WriteLine(message.Length);
}
}
public void GetMessage(string? message)
{
if (IsNotNull(message))
Console.WriteLine(message.Length);
}
private static bool IsNotNull([NotNullWhen(true)] object? obj) => obj != null;
3、给变量或属性设置可为null
private string _name = null!;
public DbSet<TodoItem> TodoItems { get; set; } = null!;
4、在参数类型后增加?
一种是添加 ? 注释,使变量成为可以为 null 的引用类型
void IList.Insert(int index, object ?value)
{
if (value != null)
this.Insert(index, (Animal)value);
}
object? IList.this[int index]
{
get
{
return _list[index]!;
}
set
{
_list[index] = (Animal?)value;//(Animal)value;
}
}
5、在参数后增加!
将 null 包容性运算符 ! 添加到右侧:
string msg = TryGetMessage(42)!;
return msg!;
Console.WriteLine(msg!.Length);
6、使用empty
public class Person
{
public string FirstName { get; set; } = string.Empty;
public string LastName { get; set; } = string.Empty;
}
7、给参数使用NotNullWhen时配合显式null
public bool TryGetMessage(int id, [NotNullWhen(true)] out string? message)
{
message = null;
return true;
}
8、set设置器警告
就算这样,我们发现,有的set的设置器的警告还是没有办法去掉,这个时候我们可以在返回类型上加上“!”即可,如下图:
还有这种情况,看起来是构造函数被警告了,实际为属性的问题
public class Person
{
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
我们可以参考的官方说明:点击这里
来源:https://blog.csdn.net/haigear/article/details/128773911


猜你喜欢
- 在有些产品的研发过程中,一般我们都有很多条数据记录在一个LOG文件中。在查看最新的数据记录都是从最开始保存的那条开始存储,所以,参考了网上一
- 简介说明本文用示例介绍MyBatis-Plus如何解决逻辑删除与唯一索引的问题。物理删除与逻辑删除数据是很重要的,数据库里的数据在删除时一般
- 目录简介普通邮件导入javax.mail依赖Spring配置类邮件配置:mail.properties测试基于thymeleaf模版的邮件导
- 在C程序代码中我们可以利用操作系统提供的互斥锁来实现同步块的互斥访问及线程的阻塞及唤醒等工作。然而在Java中除了提供LockAPI外还在语
- Java本身都是值传递式的调用,对于对象传递的是地址值。给地址值重新赋值等于重新指向,不会影响外层。而且这里Integer对象也有特殊性。其
- 本文主要介绍了隐式Intent匹配目标组件的规则,若有叙述不清晰或是不准确的地方希望大家指出,谢谢大家: )1. Intent简
- 一、饿汉式(静态常量)public class Face { private stat
- 简介本文用示例介绍SpringBoot如何向容器注册bean(即:将对象加入容器)。法1:@Component(@Controller/@S
- 一、获取安装包信息/** * 获取apk包的信息:版本号,名称,图标等 * @param absPath apk包的绝对路径 * @para
- using System;using System.Collections.Generic;using System.ComponentMo
- springboot 取消starter的自动注入starer是spring boot中一个很重要的概念,starter相当于一个模块,它能
- 本篇主要讲解如何使用Ideal 搭建Spring的源码环境,想必大家都会多多少少去看过Spring的部分源码,一般我们都是直接点进某个Spr
- 一、定义实体类Person,封装生成的数据package net.dc.test;public class Person { private
- java 方法签名,我想做java 开发的朋友也知道,方法签名的重要性,是方法重载的一个比较好的解释,尤其是在后续优化方面,这里记录下,有看
- 一、大致界面介绍:图1图2图3图4图1:手势密码绘制界面 【主要是绘制上方的9个提示图标和9个宫格密码图标】图2:设置手势密码 【监听手势的
- 前言从本篇文章开始,我们将逐步开始分析Consumer的源码,首先我们将整体介绍Consumer的接口和相关实现类以及DefaultMQPu
- 默认静态资源供SpringBoot有几个默认的静态资源目录,当然也可配置,默认配置的/**映射到/static(或/public ,/res
- 如果想实现一个在桌面显示的悬浮窗,用Dialog、PopupWindow、Toast等已经不能实现了,他们基本都是在Activity之上显示
- RocketMQ修改生产者消费者日志保存路径rocket默认是将所有日志文件保存到user.home的对于win系统就是C盘了。1.修改Ro
- 基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同