关于使用新{}的问题

时间:2011-03-16 21:29:48

标签: c# asp.net asp.net-mvc-2

我目前正在通过Apress ASP.NET MVC2书籍,我对以下代码中 new {returnUrl} 的用户感到有些困惑:

public RedirectToRouteResult RemoveFromCart(Cart cart, int productID, string returnUrl)
{
    Product product = productsRepository.Products.FirstOrDefault(p => p.ProductID == productID);
    cart.RemoveLine(product);
    return RedirectToAction("Index", new { returnUrl });
}

是否与创建新字符串有关,而不是简单地传递对传入的参数的引用?

4 个答案:

答案 0 :(得分:12)

它正在创建一个匿名类型,其属性returnUrl也具有returnUrl。所以它是这样的:

var anon = new { returnUrl = returnUrl };
return RedirectToAction("Index", anon);

使用表达式中的名称来确定匿名类型中属性的名称称为投影初始值设定项

这有助于向您解释吗?如果没有,您可能希望一般修改anonymous types。它们是在C#3中引入的,主要用于LINQ。

答案 1 :(得分:0)

答案 2 :(得分:0)

这是一个匿名对象。上面的案例中的属性将使用字符串属性'returnUrl'创建一个新对象。

在此上下文中,它指定ActionResult的URL以将浏览器重定向到。

答案 3 :(得分:0)

该语法创建一个匿名类型。它们是根据需要即时创建的。在您的示例中,它创建一个具有一个属性的新对象,然后将其作为参数传递给操作。