什么网站做优化最好?,WordPress 延时加载,装修之家,网站内容架构目录
一、CA1050警告及处理
1.如何解决冲突#xff1a;
2.何时禁止显示警告#xff1a;
二、CA1821警告及处理
三、CA1822警告及处理
四、CA1859警告及处理
1.警告解决之前
2.警告解决之后
3.解决办法
1.警告解决之前
2.警告解决之后
3.解决办法
五、CA2249警告…目录
一、CA1050警告及处理
1.如何解决冲突
2.何时禁止显示警告
二、CA1821警告及处理
三、CA1822警告及处理
四、CA1859警告及处理
1.警告解决之前
2.警告解决之后
3.解决办法
1.警告解决之前
2.警告解决之后
3.解决办法
五、CA2249警告及处理 一、CA1050警告及处理 严重性 代码 说明 项目 文件 行 禁止显示状态 详细说明 消息 CA1050 在命名空间中声明类型 EFGetStarted D:\360安全浏览器下载\EntityFramework.Docs-main\samples\core\GetStarted\Model.cs 28 活动 在命名空间中声明类型以防止名称冲突并作为一种组织对象层次结构中相关类型的方式。
1.如何解决冲突 若要修复与此规则的冲突请将类型置于命名空间中。比如新增一个namespace Remove_CA1050{}命名空间然后把发生所有程序代码剪切到这个空间中警告自然消失。
2.何时禁止显示警告 虽然根本不必禁止显示此规则中的警告但当程序集绝不会与其他组件一起使用时可以禁止显示。
二、CA1821警告及处理 严重性 代码 说明 项目 文件 行 禁止显示状态 消息 CA1821 移除空终结器 03 F:\C#_TM\chapter9\03\Program.cs 16 活动 终结器析构函数一旦为空CA1821。 应尽可能避免终结器因为跟踪对象生存期会产生额外的性能系统开销。 垃圾回收器在收集对象之前运行终结器。 如果调试需要终结器请将整个终结器置于 #if DEBUG / #endif 指令中。
public class Class3
{
#if DEBUG
// Violation will not occur because the finalizer will exist and
// contain code when the DEBUG directive is present. When the
// DEBUG directive is not present, the finalizer will not exist,
// and therefore not be empty.
~Class3()
{ Debug.Fail(Finalizer called!); }
#endif
} 终结器以前称为析构器用于在垃圾回收器收集类实例时执行任何必要的最终清理操作。终结器隐式调用对象基类上的 Finalize。 因此对终结器的调用会隐式转换为以下代码
protected override void Finalize()
{try{// Cleanup statements...}finally{base.Finalize();}
} 这种设计意味着对继承链从派生程度最高到派生程度最低中的所有实例以递归方式调用 Finalize 方法。不应使用空终结器。不必要的终结器会导致不必要的性能损失。对于终结器是否在应用程序终止过程中运行这特定于每个 .NET 的实现。 .NET 5包括 .NET Core及更高版本不会在应用程序终止过程中调用终结器。
//析构函数
//CA1821:移除空终结器或需要#if DEBUG/#endif
//.NET Framework输出显示当应用程序终止时这三个类的终结器将按照派生程度最高到最低的顺序自动进行调用。
//.NET 5包括 .NET Core或更高版本没有输出因为在应用程序终止时此 .NET 的实现不调用终结器。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace Test9_3
{class Program{public Program(){Console.WriteLine(我是构造函数);}
#if DEBUG~Program() //析构函数{Console.WriteLine(析构函数自动调用); //输出一个字符串}
#endifstatic void Main(string[] args){if (args is null) //解除IDE0060{throw new ArgumentNullException(nameof(args));}Program program new(); //实例化Program对象 }}
}
/*运行结果
我是构造函数 */
三、CA1822警告及处理 严重性 代码 说明 项目 文件 行 禁止显示状态 消息 CA1822 成员“SubscribeToRing”不访问实例数据可标记为 static 09 E:\C#_TM\chapter17\09\Program.cs 42 活动 解决办法按照提示增加static修饰符。
四、CA1859警告及处理 严重性 代码 说明 项目 文件 行 禁止显示状态 消息 CA1859 将变量“_Imyinterface”的类型从“_02.IMyInterface”更改为“_02.Program”以提高性能 02 E:\C#_TM\chapter17\02\Program.cs 72 活动
1.警告解决之前
static void Main(string[] args)
{Program program new(); //实例化Program类对象IMyInterface Imyinterface program; //使用派生类对象实例化接口ImyInterfaceImyinterface.ID TM; //为派生类中的ID属性赋值Imyinterface.Name C#从入门到精通; //为派生类中的Name属性赋值Imyinterface.ShowInfo(); //调用派生类中方法显示定义的属性值Console.WriteLine(----------------------); //用子类派生类直接实例化program.ID TM;program.Name C#从入门到精通;program.ShowInfo();Console.Read();
}
2.警告解决之后
static void Main(string[] args){Program program new(); //实例化Program类对象//使用派生类对象实例化接口 ((IMyInterface)program).ID TM; //为派生类中的ID属性赋值((IMyInterface)program).Name C#从入门到精通; //为派生类中的Name属性赋值((IMyInterface)program).ShowInfo(); //调用派生类中方法显示定义的属性值Console.WriteLine(----------------------); //用子类派生类直接实例化program.ID TM;program.Name C#从入门到精通;program.ShowInfo();Console.Read();}
3.解决办法 内联临时变量后警告消失 严重性 代码 说明 项目 文件 行 禁止显示状态 消息 CA1859 将变量“factory”的类型从“_01.IGenericInterfaceSystem.ComponentModel.IListSource”更改为“_01.FactorySystem.Data.DataTable, System.ComponentModel.IListSource”以提高性能 01 E:\C#_TM\chapter19\01\Program.cs 36 活动
1.警告解决之前
//实例化接口
static void Main(/*string[] args*/)
{//实例化接口IGenericInterfaceIListSource factory new FactorySystem.Data.DataTable, IListSource();//输出指定泛型的类型Console.WriteLine(factory.CreateInstance().GetType().ToString());Console.ReadLine();
}
2.警告解决之后
static void Main(/*string[] args*/)
{//内联临时变量后不需要实例化接口//输出指定泛型的类型Console.WriteLine(new FactorySystem.Data.DataTable, IListSource().CreateInstance().GetType().ToString());Console.ReadLine();
}
3.解决办法 内联临时变量按着提示操作不定义显式的变量。
五、CA2249警告及处理 请考虑使用 String.Contains 而不是 String.IndexOf 原因 此规则查找对 IndexOf 的调用其中结果用于检查是否存在 substring并建议使用 Contains 来提高可读性。当使用 IndexOf 来检查结果是否等于 -1 或大于等于 0 时可安全地将该调用替换为 Contains而不会对性能产生影响。根据所使用的 IndexOf 重载建议的解决方法可能是添加 comparisonType 参数 重载 建议的解决方法 String.IndexOf(char) String.Contains(char) String.IndexOf(string) String.Contains(string,StringComparison.CurrentCulture) String.IndexOf(char, StringComparison.Ordinal) String.Contains(char) tring.IndexOf(string, StringComparison.Ordinal) String.Contains(string) String.IndexOf(char,NONStringComparison.Ordinal)* String.Contains(char, NON StringComparison.Ordinal)* String.IndexOf(string,NON StringComparison.Ordinal)* String.Contains(string, NON StringComparison.Ordinal)*
* StringComparison.Ordinal 之外的任何 StringComparison 枚举值
CurrentCulture
CurrentCultureIgnoreCase
InvariantCulture
InvariantCultureIgnoreCase
OrdinalIgnoreCaseCA2249考虑使用“String.Contains”而不是“String.IndexOf”代码分析 - .NET | Microsoft Learn https://learn.microsoft.com/zh-cn/dotnet/fundamentals/code-analysis/quality-rules/ca2249