Tag: C#的

属性订单保证金?

如果我在XAML中有这样的string Storyboard.TargetProperty="Margin" From="1,2,3,4" To="0,0,0,0" 什么是上下左右? 1-右2-顶3-左4-底 那是对的?

如何将linq结果转换为HashSet或HashedSet

我有一个属于ISet的类。 我试图得到一个linq查询的结果到该属性,但无法弄清楚如何做到这一点。 基本上,寻找这个的最后部分: ISet<T> foo = new HashedSet<T>(); foo = (from x in bar.Items select x).SOMETHING; 也可以这样做: HashSet<T> foo = new HashSet<T>(); foo = (from x in bar.Items select x).SOMETHING; 编辑:这是我最终做的: public static HashSet<T> ToHashSet<T>(this IEnumerable<T> source) { return new HashSet<T>(source); } public static HashedSet<T> ToHashedSet<T>(this IEnumerable<T> source) { return new HashedSet<T>(source.ToHashSet()); }

在testing初始化​​方法中模拟HttpContext.Current

我试图添加unit testing到我已经build立的ASP.NET MVC应用程序。 在我的unit testing中,我使用下面的代码: [TestMethod] public void IndexAction_Should_Return_View() { var controller = new MembershipController(); controller.SetFakeControllerContext("TestUser"); … } 通过以下帮助程序来模拟控制器上下文: public static class FakeControllerContext { public static HttpContextBase FakeHttpContext(string username) { var context = new Mock<HttpContextBase>(); context.SetupGet(ctx => ctx.Request.IsAuthenticated).Returns(!string.IsNullOrEmpty(username)); if (!string.IsNullOrEmpty(username)) context.SetupGet(ctx => ctx.User.Identity).Returns(FakeIdentity.CreateIdentity(username)); return context.Object; } public static void SetFakeControllerContext(this Controller controller, string username = […]

为什么&&而不是&

为什么&&更&& &和|| |最好| ? 我问了一个编程多年的人,他的解释是: 例如,在if (bool1 && bool2 && bool3) { /*DoSomething*/ } , bool1必须是true才能在bool3之前testingbool3 ,如果我使用了单个换句话说,即使他们都必须是真实的,才能进入下一个线路,所以为什么它无论如何都是重要的? 注:我想指出,我是一个孩子的编程等价物,这不是一个严重或紧急的问题,更重要的是理解为什么事情应该以某种方式做,而不是另一种。

在asp.net强制https整个网站的最佳途径?

大约6个月前,我推出了一个网站,每个请求都需要通过https。 当时我能find的唯一方法是确保对页面的每个请求都通过https来检查页面加载事件。 如果请求不是通过http我会response.redirect(“ https://example.com ”) 有没有更好的方法 – 理想情况下在web.config中的一些设置?

C#空string错误

private string? typeOfContract { get { return (string?)ViewState["typeOfContract"]; } set { ViewState["typeOfContract"] = value; } } 后来在代码中我使用它是这样的: typeOfContract = Request.QueryString["type"]; 在typeOfContract行的声明中typeOfContract以下错误: types'string'必须是非空值types,以便在通用types或方法'System.Nullable <T>'中将其用作参数'T' 有任何想法吗? 基本上,我想在执行操作之前确保QueryString存在"type" 。

独特的方式来使用空合并运算符

我知道在C#中使用Null合并运算符的标准方法是设置默认值。 string nobody = null; string somebody = "Bob Saget"; string anybody = ""; anybody = nobody ?? "Mr. T"; // returns Mr. T anybody = somebody ?? "Mr. T"; // returns "Bob Saget" 但还有什么可以?? 用于? 它看起来不像三元运算符那样有用,除了比以下更简洁和更易读: nobody = null; anybody = nobody == null ? "Bob Saget" : nobody; // returns Bob Saget 所以,即使知道更less的空合并操作符… […]

在std :: vector :: erase()和std :: deque :: erase()中复制/移动赋值

在回答另一个问题的过程中,我偶然发现了std::vector::erase()和std::deque::erase()略有不同的措辞。 这是C ++ 14关于std::deque::erase ( [deque.modifiers]/4-6 ,强调我的) [deque.modifiers]/4-6 : 效果: … 复杂性:对析构函数的调用次数与删除元素的数量相同,但对赋值运算符的调用次数不超过元素数量中的较小值。在删除元素之前以及元素数量擦除元素。 抛出:除非复制构造函数,移动构造函数,赋值运算符或移动T赋值运算符引发exception,否则为Nothing。 这是什么说std::vector::erase ( [vector.modifiers]/3-5 ): 效果: … 复杂性: T的析构函数被称为等于被擦除元素数量的次数,但T的移动赋值运算符被称为等于被擦除元素之后的向量中元素数量的次数。 抛出:除非复制构造函数,移动构造函数,赋值运算符或移动T赋值运算符引发exception,否则为Nothing。 正如你所看到的,它们的exception规范都是相同的,但是对于std::vector ,明确提到移动赋值运算符被调用。 还有要求T是MoveAssignable的erase()与std::vector和std::deque (表100)一起工作,但这并不意味着存在移动赋值操作符:可以定义一个拷贝分配运算符,而不定义移动赋值运算符,而这个类将是MoveAssignable 。 为了以防万一,我用GCC和Clang进行了检查,如果没有移动赋值操作符, std::deque::erase()也是一样的( DEMO ),那么std::vector::erase()调用复制赋值操作符。 所以问题是:我错过了什么,或者这是标准的(编辑)问题? 更新:我已经提交了一个LWG问题#2477 。

超越堆栈采样:C ++ Profiler

黑客的故事 这个date是12/02/10。 圣诞节前的日子正在stream逝,我几乎是一个Windows程序员打了一个主要的路障。 我一直在使用AQTime,我试过困,有光泽,很困,而且正如我们所说,VTune正在安装。 我试图使用VS2008分析器,这是积极的惩罚,以及往往不知情。 我使用了随机暂停技术。 我已经检查了一些调用树。 我发射了function痕迹。 但是令人痛心的事实是,我正在使用的应用程序有超过一百万行代码,可能还有另外一百万行第三方应用程序。 我需要更好的工具。 我读过其他主题。 我已经尝试了每个主题中列出的每个分析器。 只要有一些比这些垃圾和昂贵的select更好的东西,或者可笑的工作量几乎没有收获。 更复杂的是,我们的代码是高度线程化的,并且运行了一些Qt事件循环,其中一些是非常脆弱的,由于时间延迟,它们在沉重的仪器下崩溃。 不要问我为什么要运行多个事件循环。 没有人能告诉我。 Valgrind在windows环境下有更多的select吗? 有没有什么比我已经尝试过的那些破碎的工具更好? 是否有任何devise与Qt集成,可能与队列中的事件有用的显示? 我试过的工具的完整列表,以及那些在斜体中非常有用的工具: AQTime:相当好! 深度recursion有一些问题,但在这些情况下调用图是正确的,可以用来清除你可能有的任何混淆。 不是一个完美的工具,但值得尝试。 这可能适合你的需求,大部分时间对我来说确实够好。 debugging模式下的随机暂停攻击:没有足够的信息足够的时间。 一个好工具,但不是一个完整的解决scheme 平行工作室:核select。 突兀,怪异,疯狂的强大。 我认为你应该进行30天的评估,并确定它是否合适。 它也很酷。 AMD Codeanalyst:精彩,易于使用,非常容易崩溃,但我认为这是一个环境问题。 我build议尝试一下,因为它是免费的。 Luke Stackwalker:在小型项目上工作得很好,有点试图让它在我们的工作。 一些好的结果,但它绝对取代了我的个人任务的睡眠。 PurifyPlus:不支持Win-x64环境,最显眼的是Windows 7。 我在其他部门的一些同事发誓。 VS2008 Profiler:以所需的分辨率在function跟踪模式下产生100 +演出范围内的输出。 从正面来看,产生稳固的结果。 GProf:要求海湾合作委员会甚至适度有效。 VTune:VTune的W7支持犯罪分子。 否则优秀 个人识别码:我需要破解我自己的工具,所以这是不得已而为之的。 昏昏欲睡\ VerySleepy:有用的小型应用程序,但在这里失败。 EasyProfiler:不错,如果你不介意一些手动注入的代码来指示在哪里工具。 Valgrind:只有nix,但是当你在这个环境里时,它是非常好的。 OProfile:仅限Linux。 Proffy:他们拍野马。 我还没有尝试过的build议工具: XPerf: […]

可为空的对象必须有一个值

exception描述中有一个悖论:可为空的对象必须有一个值(?!) 这就是问题: 我有一个DateTimeExtended类,有 { DateTime? MyDataTime; int? otherdata; } 和一个构造函数 DateTimeExtended(DateTimeExtended myNewDT) { this.MyDateTime = myNewDT.MyDateTime.Value; this.otherdata = myNewDT.otherdata; } 运行这个代码 DateTimeExtended res = new DateTimeExtended(oldDTE); 抛出一个InvalidOperationException与消息: 可为空的对象必须有一个值。 myNewDT.MyDateTime.Value – 有效且包含常规的DateTime对象。 这条信息的意思是什么,我做错了什么? 请注意, oldDTE不为null 。 我已经从myNewDT.MyDateTime删除了Value ,但是由于生成的setter会引发同样的exception。