Unb*_*ble 5 c# asp.net-mvc asp.net-mvc-5
我是一名初学者,使用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);
}
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
我是初学者,我尝试了两个代码,两个代码都适合我.
问题1:为什么两个代码都能正常工作?
问题2:何时使用"新"和何时不"使用".有人可以告诉我这两个场景的一个例子.
问题3:两者之间有什么区别.
有人可以指导我一点.
看看不仅仅是那一行,看看该方法的其余部分在做什么.在所有逻辑情况下,(if和else),该变量被设置为某种东西.(假设.GetData()方法成功返回了一些东西.)
在一般意义上,您可以new在想要创建对象的新实例时使用.您展示的示例不需要这样做,因为它接下来要做的是用另一个实例替换该实例.没有必要创建一些东西只是为了立即抛弃它.
为什么这两个代码都可以正常工作?他们两者有什么区别呢?
最简单的说法是“因为他们做同样的事情”。更具体地说,您的第二个代码片段进行了一个被忽略的分配;除了那一项任务之外,代码是相同的。
何时使用“new”,何时不使用
当所有代码分支都进行分配时(如您的情况),请勿使用new. 当您需要分配一个对象并稍后重新分配它时,请使用new. 如果您在某些情况下不需要对象,但在其他情况下需要它,请使用null代替new。
请注意,如果您未分配局部变量,编译器将在第一次读取该变量之前检查所有分支是否为您执行分配:
PaymentFormMV data;
if (SimUtils.IsDelayedPaymentAllowed)
{
data = Pay.GetData(PaymentPageMode.DelayedPayment);
} // No "else"
return PartialView("PaymentsWrapper", data); // Compile-time error
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
675 次 |
| 最近记录: |