草庐IT

const_assert

全部标签

c# - 使用 Single 作为 Assert 是一种不好的做法吗?

我正在测试一种操作集合的方法。给定一组参数,它应该只包含一个与条件匹配的元素。编辑:该集合可能还有其他几个不符合条件的元素。我正在使用Single测试该行为,效果很好,因为如果根本没有匹配项或多个匹配项,它将通过抛出异常来使测试失败。但是没有实际的断言,它以某种方式违反了arrange、act、assert。所以我想知道这是否是一种不好的做法,是否有更好的方法来做到这一点。以下伪代码演示我的问题:[TestMethod]publicvoidTestMethod(){Listlist=MethodToTest(param1,param2);list.Single(s=>s.Matches

c# - 如何使用 JSON.NET 序列化静态或 const 成员变量?

我无法在任何地方找到这个问题的答案,但是当我尝试使用静态或常量成员变量序列化结构或类时,默认情况下它们不会序列化。如果我尝试通过设置MemberSerialization.OptIn强制序列化,我会收到错误。例如[JsonObject(MemberSerialization.OptIn)]publicclassTest{[JsonProperty]publicintx=1;[JsonProperty]publicstaticinty=2;}如果我尝试使用以下方法序列化此类:Testt=newTest();strings=JsonConvert.SerializeObject(t);我收

c# - 为什么不能将可空值声明为 const?

[TestClass]publicclassMsProjectIntegration{constint?projectID=null;//Thetype'int?'cannotbedeclaredconst//...}为什么我不能有一个constint??编辑:我想要一个可为空的int作为const的原因是因为我只是用它来从数据库加载一些示例数据。如果它为空,我将在运行时初始化示例数据。这是一个非常快速的测试项目,显然我可以使用0或-1,但int?感觉就像适合我想做的事情的正确数据结构。只读似乎是要走的路 最佳答案 这不仅仅是可空值

c# - NUnit:为什么 Assert.Throws<T> 没有捕获我的 ArgumentNullException?

我应尊敬的JohnSkeet先生的要求重新发布这个问题,他建议我设计一个简单的测试程序来隔离和演示我遇到的问题并重新发布这个问题。这个问题源于thisone,所以如果这一切听起来很熟悉,请原谅我。您可能会从那个问题中收集到关于这个问题的额外详细信息。我遇到的问题是Assert.Throws来自NUnit2.5.9。有时,它无法捕获在TestDelegate调用的方法中抛出的任何异常。我在下面的代码中以可重现的方式确定了这种行为。(尽管这可能是FailsOnMyMachine™的一个例子。为了重现错误,我创建了一个包含两个C#DLL项目的解决方案:第一个包含一个类,具有一个公共(publ

ShouldBeEquivalentTo 的 C# Fluent Assertions 全局选项

在FluentAssertions中比较具有DateTime属性的对象时,有时会出现毫秒的轻微不匹配,从而导致比较失败。我们绕过它的方法是像这样设置比较选项:actual.ShouldBeEquivalentTo(expected,options=>options.Using(ctx=>ctx.Subject.Should().BeCloseTo(ctx.Expectation)).WhenTypeIs());有没有办法设置一次并始终应用它,而不是每次我们调用ShouldBeEquivalentTo时都必须指定它?更新一:尝试了以下方法,但它似乎不起作用,测试在1毫秒差异时失败。新的默

c# - 为什么C#中没有const成员方法和const参数?

与C++不同,C#中没有任何常量成员方法和常量参数。这是什么原因? 最佳答案 首先,不要求我们提供不实现某项功能的理由。功能非常昂贵;必须有理由实现一项功能,而不是不实现一项功能的理由。其次,C#不是C++或C的克隆。仅仅因为某项功能是用其他语言编写的并不能成为将其放入C#的理由。第三,“const”在C和C++中被深深地、悲惨地破坏了。“const”不能保证您实际上可以依赖。如果您是采用常量引用的方法的调用者,那么您无法保证该方法遵循常量;该方法有多种改变const引用的方法。如果您是const引用的消费者,那么您无法保证底层对象

c# - 只读 ("const"-like) C# 的函数参数

我有C++背景,习惯于将const关键字添加到函数定义中,以使对象以只读值传递。但是,我发现这在C#中是不可能的(如果我错了请纠正我)。经过一番谷歌搜索后,我得出的结论是,创建只读对象的唯一方法是编写一个仅具有“get”属性的接口(interface),然后将其传入。优雅,我必须说。publicinterfaceIFoo{IMyValInterfaceMyVal{get;}}publicclassFoo:IFoo{privateConcreteMyVal_myVal;publicIMyValInterfaceMyVal{get{return_myVal;}}}我会将它传递给:publi

c# - 如何在 C# 中访问属性或 const 的 Description 属性?

如何访问常量或属性的Description属性,即publicstaticclassGroup{[Description("Specifiedparent-childrelationshipalreadyexists.")]publicconstintParentChildRelationshipExists=1;[Description("Userisalreadyamemberofthegroup.")]publicconstintUserExistsInGroup=2;}或publicstaticclassGroup{[Description("Specifiedparent-c

javascript - 所以我使用 Javascript const 关键字,在 IE 中会发生什么?

我知道const关键字已经在除IE10版本之外的浏览器中全面实现,但它可行吗?如果有人在IE10上跳转到我的站点MDN有关const关键字的文档在底部提供了一个方便的图表,它告诉我不仅IE,而且许多移动浏览器也不支持它。我应该废弃它并使用var吗? 最佳答案 以Babel为例,它是ECMAScript2015(ES6)到ECMAScript5的转译器。如果你写:consta=123;输出:"usestrict";vara=123;如果在不受支持的浏览器上破坏您的代码的可能性还不够,我认为应该是。

javascript - Javascript 中的 const 关键字作用域

1.>>>consta=22.>>>vara=33.>>>a=44.>>>a//print2为什么允许运行3号线?const似乎比没有任何关键字更“全局”... 最佳答案 const范围被定义为“block范围”(其范围仅限于声明它的block)。MDNdocumentation:Constantsareblock-scoped,muchlikevariablesdefinedusingtheletstatement.Thevalueofaconstantcannotchangethroughre-assignment,anditc