【问题标题】:Code contract does not work in Visual Studio 2019代码合同在 Visual Studio 2019 中不起作用
【发布时间】:2020-11-23 10:14:30
【问题描述】:

我正在学习代码合同,但它不会给我带来任何错误或任何东西。我正在使用 Visual Studio 2019。

代码如下:

using System.Diagnostics.Contracts;

namespace ConsoleApp1
{
    class Calculations
    {
        public static void Division(string name)
        {
            Contract.Requires(!string.IsNullOrEmpty(name));
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            string s = null;
            Calculations.Division(s);
        }
    }
}

这怎么不丢给我任何东西?当我打电话给Division时,我几乎违反了合同。

【问题讨论】:

  • 如果你想使用代码合约并在你的代码中抛出异常,可以参考Contract.Requires usage中的步骤

标签: c# .net visual-studio contract


【解决方案1】:

很可能是因为documentation 中的以下行

合约类中的大部分方法都是有条件编译的;也就是说,仅当您使用#define 指令定义特殊符号 CONTRACTS_FULL 时,编译器才会发出对这些方法的调用。 CONTRACTS_FULL 允许您在代码中编写合约而不使用#ifdef 指令;您可以生成不同的版本,有些有合同,有些没有。

文档中还提到,一旦您设置和使用 Code.Contracts UI,就会定义 CONTRACTS_FULL

【讨论】:

    猜你喜欢
    • 2020-11-24
    • 2020-06-03
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2021-06-21
    • 1970-01-01
    • 2016-09-15
    相关资源
    最近更新 更多