【发布时间】:2018-06-23 08:54:24
【问题描述】:
我的一个 C# 类中有以下 sn-p 代码:
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。
但是,添加该编译指示后,我收到了一个新警告仅在 Unity 编辑器中 - 不是在 Visual Studio 中构建代码时:
警告 CS1692:号码无效
双击它会直接带我到 #pragma warning disable 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 pragma,则不会出现CS1692 警告。
不确定这如何与提供的两个答案相加。
【问题讨论】:
标签: c# unity3d warnings pragma