在ASP.NET MVC 5中创建对象时何时在C#中使用NEW关键字
我是一名初学者,使用C#语言的ASP.Net MVC 5框架学习Web开发.我遇到下面的代码:
Scenrio 1:在对象创建中没有使用新的关键字. [AuthorizeFunc] [BlockWidget] public PartialViewResult WidgetPayments() { PaymentFormMV data; // No New Keyword used if (SimUtils.IsDelayedPaymentAllowed) { data = Pay.GetData(PaymentPageMode.DelayedPayment); } else { data = PayHelp.GetData(PaymentPageMode.MakePayment); } return PartialView("PaymentsWrapper",data); } Scenrio 2:在对象创建中使用的新关键字. [AuthorizeFunc] [BlockWidget] public PartialViewResult WidgetPayments() { PaymentFormMV data = new PaymentFormMV(); // New Keyword used if (SimUtils.IsDelayedPaymentAllowed) { data = Pay.GetData(PaymentPageMode.DelayedPayment); } else { data = PayHelp.GetData(PaymentPageMode.MakePayment); } return PartialView("PaymentsWrapper",data); } 我是初学者,我尝试了两个代码,两个代码都适合我. 问题1:为什么两个代码都能正常工作? 问题2:何时使用“新”和何时不“使用”.有人可以告诉我这两个场景的一个例子. 问题3:两者之间有什么区别. 有人可以指导我一点. 解决方法
最简单的方法是“因为他们做同样的事情”.更具体地说,您的第二个代码段会生成一个被忽略的赋值;除了那个任务,代码是相同的.
当所有代码分支进行分配时,就像你的情况一样,不要使用new.当您需要分配对象,然后稍后重新分配它时,请使用new.如果在某些情况下不需要对象,但在其他情况下确实需要它,请使用null而不是new. 请注意,如果保留未分配的局部变量,编译器将在第一次读取变量之前检查所有分支是否为您执行分配: PaymentFormMV data; if (SimUtils.IsDelayedPaymentAllowed) { data = Pay.GetData(PaymentPageMode.DelayedPayment); } // No "else" return PartialView("PaymentsWrapper",data); // Compile-time error (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – DTO可以嵌套DTO吗?
- asp.net-mvc – MVC4应用程序“无法加载DLL’libmp3lame.32
- asp.net – App_Data / ASPNETDB.MDF到Sql Server 2005(或0
- asp.net-mvc – ASP.NET MVC路由Maproute参数
- asp.net-mvc – 处理.NET MVC 2动作过滤器时的执行顺序是什
- asp.net-mvc – 在哪里可以找到一个简单的简单解释MVC?
- asp.net-mvc-3 – 在ASP.NET MVC 3中应用数据注释时,如何使
- 增加ASP.net WebForm性能
- Asp.Net MVC5 – Html.Action – 属性路由 – 导致异常的奇
- asp.net – 如何通过LINQ获得第一级的孩子