IntPtr pointer;//blahblahblahpointer = new IntPtr(pointer.ToInt32() + Marshal.SizeOf(typeof(SomeStruct)));
这要求IntPtr与Int32具有相同的大小.所以我想要一个编译时断言 – 就像这个C代码
static_assert(sizeof(IntPtr)==sizeof(Int32))
所以我尝试了以下方法:
System.Diagnostics.Contracts.Contract.Assert(false); //just to test itpointer = new IntPtr(pointer.ToInt32() + Marshal.SizeOf(typeof(SomeStruct)));
我将false传递给Assert()以便它肯定会失败,但编译通过就好了.
那么如何使用代码契约来编译时断言呢?
解决方法 那是因为代码契约与编译时断言不同.它们仍然是运行时代码,但它们还带有静态分析规则集,您可以在项目中启用它来执行您要查找的内容.看看这个看起来已经很好地回答了这个问题的问题:Contract.Assert do not throw compilation error
总结以上是内存溢出为你收集整理的如何使用代码约定在C#中使用编译时断言?全部内容,希望文章能够帮你解决如何使用代码约定在C#中使用编译时断言?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)