c#,方法(new {x = y.property})是什么意思?

Nib*_*Pig 2 c# anonymous-types

我一直在关注asp.net MVC上的一些视频,我认为这个问题只是一个普通的C#.

我注意到有时在示例代码中,方法参数会像这样被调用

blah.method("something here",
            "Something else",
            new { blah=item.someProperty });
Run Code Online (Sandbox Code Playgroud)

你能解释第3个参数发生了什么吗?正如我在观看的视频中看到的那样,该方法为第三个参数提供了一个对象.

Mar*_*ell 6

它是一个匿名类型,在blah给定评估值的情况下调用属性item.someProperty.在某些情况下,它是传递一组键/值对的有趣方式 - 比字典更容易,例如:

new {Forename="Fred", Surname="Jones" }
Run Code Online (Sandbox Code Playgroud)

比字典和两个记录("Forename"/"Fred","Surname"/"Jones")更简单.MVC在许多地方使用这种方法来传递半可选参数(有点像约定优于配置).它与很多jQuery相当,让我们面对它:大多数MVC用户也使用jQuery,所以这两个方法很好地结合在一起.

string.Format在我的博客上讨论了这个主题(以及来自SO的一个例子):这里简单地传递数据; 从jQuery和ASP.NET MVC学习.