将c#函数设置为非私有,将其标记为final或密封其声明类型
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了将c#函数设置为非私有,将其标记为final或密封其声明类型,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1448字,纯文字阅读大概需要3分钟。
内容图文
我正在维护一些旧的C#代码,并且不能过多地改变它的结构.我试图以安全的方式减少一些现有的编译器警告.某些功能给了我以下警告:
Warning CS0108 ‘Function(string, string)’ hides inherited member ‘xyz.Function(string, string)’. Use the new keyword if hiding was intended.
我认为隐藏继承功能是故意的,因为该软件已经成功使用了很多年了.我认为添加“new”关键字使此函数声明为无害
private new void Function(string parm1, string parm2)
警告按预期消失了,但是这个警告出现了:
Warning CA2222 Make ‘Function(string, string)’ non-private, mark it as final, or seal its declaring type. This method was originally defined in base class ‘BaseClassName’.
除了抑制这个警告,我不确定什么是最安全的(即不改变行为)选项?我不认为我应该将这种方法设为非私人(我认为这意味着“公开”).我不确定如何使其最终或密封,以及这样做是否是正确的解决方案.
解决方法:
除非通过反射访问此方法,否则请删除“new”关键字,然后重命名它(更改任何调用站点).该方法无论如何都是私有的,因此它应该只在同一个类中使用,除非它由委托传递(然后名称无关紧要)或者如果使用反射来访问它.
在代码正确的假设下,任何调用此方法都是有意的.虽然我会检查它们并检查调用站点是否有任何错误调用错误的方法.
对方法可见性的任何改变都是有问题的,所以避免这样做※.关于制作类sealed,它也是一个重大变化,因为可能存在从类继承的第三方代码,所以也要避免这样做.
※:可见性降低最差,因为可能存在使用该成员的第三方代码,因此这是一个重大变化.提高可见性(例如,使私有方法受保护或公开)可能会破坏类型的封装,暴露成员可能允许第三方代码混淆该类型对象的状态,因此要小心.
内容总结
以上是互联网集市为您收集整理的将c#函数设置为非私有,将其标记为final或密封其声明类型全部内容,希望文章能够帮你解决将c#函数设置为非私有,将其标记为final或密封其声明类型所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。