加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

在ASP.NET MVC 5中创建对象时何时在C#中使用NEW关键字

发布时间:2020-12-16 03:31:29 所属栏目:asp.Net 来源:网络整理
导读:我是一名初学者,使用C#语言的ASP.Net MVC 5框架学习Web开发.我遇到下面的代码: Scenrio 1:在对象创建中没有使用新的关键字. [AuthorizeFunc][BlockWidget]public PartialViewResult WidgetPayments(){ PaymentFormMV data; // No New Keyword used if (Sim
我是一名初学者,使用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:两者之间有什么区别.

有人可以指导我一点.

解决方法

Why both code works fine? What is the difference between both of them?

最简单的方法是“因为他们做同样的事情”.更具体地说,您的第二个代码段会生成一个被忽略的赋值;除了那个任务,代码是相同的.

When to use “new” and when not to use

当所有代码分支进行分配时,就像你的情况一样,不要使用new.当您需要分配对象,然后稍后重新分配它时,请使用new.如果在某些情况下不需要对象,但在其他情况下确实需要它,请使用null而不是new.

请注意,如果保留未分配的局部变量,编译器将在第一次读取变量之前检查所有分支是否为您执行分配:

PaymentFormMV data;
if (SimUtils.IsDelayedPaymentAllowed)
{
    data = Pay.GetData(PaymentPageMode.DelayedPayment);
}  // No "else"
return PartialView("PaymentsWrapper",data); // Compile-time error

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读