草庐IT

static_assert

全部标签

c# - Debug.Assert 出现在 Release模式

我们都知道Debug.Assert在release模式下编译时不会被编译成dll。但出于某种原因,Debug.Assertdid出现在我编写的组件的发布版本中。我怀疑我可能弄乱了我的csproject设置。知道为什么Debug.Assert出现在Release模式中吗?P/S:在问这个问题之前,我已经仔细检查以确保我确实是在Release模式下编译的。注意2:我仔细检查了我的csproject,发现在Release配置中,DefineDEBUGconstant没有被勾选,这表明对于这部分我的设置是正确的。 最佳答案 检查Define

c# - 在 C# 中,Debug.Assert 测试是否以 Release模式运行?

举个例子:publicvoidFoo(){//Code...Debug.Assert(ExpensiveTest());//Code...}当我在Release模式下编译时,Debug.Assert方法会发生什么情况?ExpensiveTest()还会运行吗?如果不是,那么它是如何工作的(因为它不是可以设置为无求值的宏)?如果它确实运行了,那不是破坏了调试断言的目的吗? 最佳答案 WhathappenstothetheDebug.AssertmethodwhenIcompileinreleasemode?它已完全删除(包括对Expe

c# - x :Static in UWP XAML

我正在开发的应用程序要求ConverterParameter是一个枚举。为此,常规的做法是:{Bindingwhatever,Converter={StaticResourceconverterName},ConverterParameter={x:Staticnamespace:Enum.Value}}但是,UWP平台x:命名空间似乎没有静态扩展。有谁知道是否有不依赖x:Static来比较绑定(bind)中的枚举的解决方案? 最佳答案 这在UWP中对我有用:Cold 关于c#-x:St

C#:static object.Equals 如何检查是否相等?

假设您有两个不同的类,每个类都有自己的Equals实现;使用哪一个?如果只有其中一个有一个怎么办?还是一个都没有?以下任何行是否等效?object.Equals(first,second)first.Equals(second)second.Equals(first)我猜前两个可能是等价的,但我真的不知道。它到底有什么作用? 最佳答案 基本上它做了三件事:检查引用是否相等(如果是则返回真)检查引用是否为空(如果任一值为null则返回false;此时null==null的情况已经处理完毕)使用first.Equals(second)检

c# - 如何实现XUnit描述性Assert消息?

上下文在XUnitgithub中我发现了这个:AddAssert.Equal(expected,actual,message)overload#350(所以开发人员要求一个不存在的重载,见下文)引用自答案:Weareabelieverinself-documentingcode;thatincludesyourassertions.(因此XUnit团队拒绝了它)好的,我知道了。我也相信自记录代码。我还是找不到这个用例:示例//Arrange//Createsomeexternalsoapserviceclientanditswrapperclasses//Act//client.Som

c# - : public static DateTime ToDateTime(DateTime value) in the . NET Framework 的目的是什么?

我正在维护一个现有的项目,我发现了这行代码:DatetimesomeDate=....;varanotherDateTime=Convert.ToDateTime(someDate);起初,我希望通过隐式调用ToString方法将someDate转换为字符串,但我错了。当我在方法上按F12时,我在System.Convert类中看到该方法的定义,如下所示://Summary:ReturnsthespecifiedSystem.DateTimeobject;noactualconversionisperformed.//Parameters://value:Adateandtimeval

C# : So if a static class is bad practice for storing global state info, 提供相同便利的好的替代方案是什么?

我一直注意到静态类在用于存储全局信息方面在SO上得到了很多不好的评价。(并且全局变量通常受到蔑视)我只想知道下面的示例有什么好的选择......我正在开发一个WPF应用程序,从我的数据库中检索到的数据的许多View都是根据当前登录用户的ID过滤的。同样,我的应用程序中的某些点应该只供被视为“管理员”的用户访问。我目前正在静态类中存储一个loggedInUserId和一个isAdminbool值。我的应用程序的各个部分都需要此信息,我想知道为什么它在这种情况下并不理想,以及替代方案是什么。启动和运行似乎非常方便。我唯一能想到的替代方法是使用IoC容器将Singleton实例注入(inje

c# - 如何防止 Debug.Assert(...) 显示模态对话框

我有几个使用Debug.Assert(...)的库。我认为Debug.Assert(...)很好,我仍然希望它们执行,但我不希望它们阻止我的应用程序的执行。理想情况下,我只希望将它们记录在某个地方。鉴于我无法更改库的代码(并且我仍然想在调试中编译并运行断言),我该如何防止Debug.Assert(...)显示模态对话框?此外,我想确保主程序在Assert发生时继续运行(与“忽略”按钮的行为相同)。谢谢! 最佳答案 不需要Debug.Listeners.Clear()只需添加到您的.config:

c# - NUnit3 : Assert. 抛出异步任务

我正在尝试将测试移植到NUnit3并收到System.ArgumentException:不支持“asyncvoid”方法,请改用“asyncTask”。[Test]publicvoidInvalidUsername(){...varexception=Assert.Throws(async()=>awaitclient.LoginAsync("notarealuser@example.com",testpassword));exception.HttpResponseMessage.StatusCode.ShouldEqual(HttpStatusCode.BadRequest);/

c# - C# 中 "static"Random.Next 的正确方法?

为什么我需要创建一个Random类的实例,如果我想创建一个介于1和100之间的随机数......就像Randomrand=newRandom();rand.Next(1,100);Random类是否有任何静态函数可以做同样的事情?喜欢...Random.Next(1,100);我不想不必要地创建一个实例 最佳答案 最佳做法是创建一个Random实例并在整个程序中使用它-否则结果可能不那么随机。不创建静态函数会鼓励这种行为。您不必担心“不必要地创建实例”,其影响充其量可以忽略不计-这就是框架的工作方式。