大佬教程收集整理的这篇文章主要介绍了c# – 禁用警告导致另一个警告的Pragma(CS1692),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
public override int GetHashCode() { // Thanks: https://stackoverflow.com/a/5910237 if (set == null) return 0; int h = 0x14345843; foreach (T elem in set) { h = unchecked(h + set.Comparer.GetHashCode(elem)); } return h; }
使用此代码,我将收到一条警告:“GetHashCode()’中引用的非只读字段”.
由于这是针对这种情况,我添加了以下编译指示来解除该警告:#pragma warning disable RECS0025.
但是,在添加该pragma之后,我仅在Unity编辑器中收到了一个新警告 – 而不是在Visual Studio中构建代码时:
双击它会直接指向#pragma警告禁用RECS0025行.
我在这做错了什么?目标是抑制RECS0025警告,当然不会引起另一个警告.
额外:我尝试在RECS0025 pragma周围禁用CS1692警告,但这也不起作用; CS1692错误继续发生.
额外的额外:我在其他地方的代码如下:
#pragma warning disable RECS0108 static SharedPool<Tuple<HierarchyMember,string>,ReactiveProperty<T>> _sharedPool; #pragma warning restore RECS0108
这不会导致CS1692错误发生.也就是说,如果我从GetHashCode函数周围删除#pragma warning disable RECS0025,但保留上面的RECS0108编译指示,则不会出现CS1692警告.
不确定这如何与两个提供的答案相加.
请注意这会禁用所有警告,因此我会尽可能地限制它的范围.
public override int GetHashCode() { // Thanks: https://stackoverflow.com/a/5910237 #pragma warning disable if (set == null) return 0; int h = 0x14345843; foreach (T elem in set) { h = unchecked(h + set.Comparer.GetHashCode(elem)); } return h; #pragma warning restore }
以上是大佬教程为你收集整理的c# – 禁用警告导致另一个警告的Pragma(CS1692)全部内容,希望文章能够帮你解决c# – 禁用警告导致另一个警告的Pragma(CS1692)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。