草庐IT

局部剪枝

全部标签

c# - 我是否必须取消订阅局部变量的匿名事件处理程序?

如果我有一个看起来像这样的代码:publicvoidFoo(){Barbar=newBar();bar.SomeEvent+=(sender,e)=>{//Dosomethinghere};bar.DoSomeOtherThingAndRaiseSomeEvent();}当方法超出范围时,bar是否会被收集,或者我是否必须手动取消订阅该事件以防止由于对SomeEvent的引用而发生内存泄漏>? 最佳答案 你的情况很好;订阅者事件不会阻止收集发布者,但可能会发生相反的情况。例如,classFoo{publiceventEventHan

c# - 静态方法是否共享其局部变量以及在不同线程并发使用期间会发生什么?

C#问题-我正在尝试确定是否可以使用静态方法,在该方法中它确实有一些它使用的局部变量。局部变量是否在方法的使用中“共享”?例如,如果从不同线程同时调用/使用静态方法,会发生什么情况?一个线程是否阻塞直到另一个线程完成等?也许普遍的问题是,在线程应用程序中,什么时候应该“不”使用静态方法? 最佳答案 方法中的局部变量存在于栈中,每个线程都有自己的栈。因此,多个线程使用该方法是安全的。但是,如果方法本身使用静态变量,那么您应该使用适当的MT保护。您可能调用的外部方法也需要安全...... 关

C# lambda,你认为局部变量值没有被取?

假设我们有以下代码:voidAFunction(){foreach(AClassiinAClassCollection){listOfLambdaFunctions.AddLast(()=>{PrintLine(i.name);});}}voidMain(){AFunction();foreach(variinlistOfLambdaFunctions)i();}有人可能会认为上面的代码和下面的代码是一样的:voidMain(){foreach(AClassiinAClassCollection)PrintLine(i.name);}然而,事实并非如此。相反,它每次都打印AClassC

c# - 在线程之间共享局部变量是否安全(通过回调闭包)?

我想做类似下面的事情-基本上我正在调用一个异步操作,它将在另一个线程中调用回调,我想等待它完成“内联”。我担心的是,由于例如存储在寄存器中,跨线程共享的更改变量(栏和事件)可能不会同步。如果它们是成员变量,我可以将它们标记为volatile,但volatile不能用于在堆栈上创建的局部变量。我可以使用成员变量,但我认为它更干净,不会因为将其全部保留在本地而使我的类困惑。Barbar=null;ManualResetEventevent=newManualResetEvent(false);foo.AsyncOperation(newAction(()=>{//Thisdelegatew

c# - 为什么局部函数生成的 IL 不同于匿名方法和 Lambda 表达式?

为什么C#7编译器将局部函数转换为其父函数所在的同一类中的方法。而对于匿名方法(和Lambda表达式),编译器会为每个父函数生成一个嵌套类,它将包含所有匿名方法作为实例方法?例如,C#代码(匿名方法):internalclassAnonymousMethod_Example{publicvoidMyFunc(string[]args){varx=5;Actionact=delegate(){Console.WriteLine(x);};act();}}将生成类似于以下内容的IL代码(匿名方法):.classprivateautoansibeforefieldinitAnonymousM

c# - 如何在发生异常时跟踪所有局部变量

当方法中发生异常时,有什么通用方法可以跟踪/记录所有局部变量的值?(在C#3中) 最佳答案 答案:使用PostSharp(策略注入(inject))、XTraceMethodBoundary属性,覆盖OnException。这记录了所有方法输入和返回参数的类型和值。我修改了PostSharp以添加一个简单的方法来记录参数。不完美但足够好privatestaticvoidTraceMethodArguments(MethodExecutionEventArgseventArgs){object[]parameters=eventArg

c# - 以编程方式构建 LINQ 查询而不用局部变量欺骗我

假设我的对象处于完美的工作状态(即TDD让我认为它们可以工作)。我有一个这样创建的列表(正确缩进除外):varresult=fromvinvendorsfrompinv.Productsorderbyp.Nameselectp;这行得通-我从所有供应商处获得了所有产品。现在我有了一个条件列表,由用户在运行时建立。让我们应用它们:foreach(AttributeainrequiredAttributes){result=result.Where(p=>p.Attributes.Contains(a));}这可能很原始,但我认为它会起作用。但是,在此foreach循环完成后,当您枚举“结

c# - 在局部 View 中使用分页,asp.net mvc

如果有人可以就以下内容提出建议,我将不胜感激:在我看来,我显示了项目列表:@modelPagedList.IPagedList@usingPagedList.Mvc;@foreach(variteminModel){//displayingdata}我的寻呼机是这样的:@Html.PagedListPager(Model,page=>Url.Action("Index",new{humanID=ViewBag.HumanID,page=page}),newPagedListRenderOptions{LinkToFirstPageFormat=">",})问题是当我点击下一页时返回空白

c# - MVC3 Layout Page、View、RenderPartial 和获取脚本文件到 Header(从局部 View )

所以我有一个布局页面@RenderSection("HeaderLast",required:false)一个View@sectionHeaderLast{}@{Html.RenderPartial("_userProfile");}还有局部View@sectionHeaderLast{alert('test');}我想这不可能那么简单。是否有一种开箱即用的正确方法,或者这是否总是需要某种中介并在ViewData周围传递内容以手动使内容冒泡到布局页面?赏金开始:赏金将奖励给为这个短时间提供的最佳解决方案。如果没有提供答案,我会将其奖励给最初回答这个问题的@SLaks。

c# - 为什么要使用隐式类型的局部变量?

当我说publicstaticIMyTypeGetGateWayManager(){IUnityContainer_container=GetContainer();IMyType_gateWayManager=_container.Resolve();return_gateWayManager;}它附带一条警告,提示Useimplicitlytypeslocalvariable。如果我把它改成publicstaticIMyTypeGetGateWayManager(){IUnityContainer_container=GetContainer();var_gateWayManage