C#语法糖 - 设置对象属性的新方法?

Eig*_*uru 6 c# syntactic-sugar

对于这里的核心C#编码器,这看起来似乎是一个完全愚蠢的问题 - 但是,我刚刚在AWS SDK论坛中遇到了一段示例代码,并且完全被它所取代:

   RunInstancesRequest runInstance = new RunInstancesRequest()
    .WithMinCount(1)
    .WithMaxCount(1)
    .WithImageId(GetXMLElement("ami"))
    .WithInstanceType("t1.micro");
Run Code Online (Sandbox Code Playgroud)

这很让人联想到旧的VB6 With ... End With语法,我一直对C#中没有这种语法感到遗憾 - 我已经在我的VS2008项目中编译了它,并且它可以节省许多独立的行,分别引用这些属性.

我确定我在过去读过文章解释为什么VB6样式的With块不在C#中,所以我的问题是:这种语法是否总是存在于语言中,或者它是最近的.NET更改启用了吗?我们可以覆盖所有对象实例化,然后在同一糖中进行属性更改吗?

Kir*_*oll 26

反正这不是更好吗?

RunInstancesRequest runInstance = new RunInstancesRequest 
{
    MinCount = 1, 
    MaxCount = 1, 
    ImageId = GetXMLEleemnt("ami"), 
    InstanceType = "t1.micro"
};
Run Code Online (Sandbox Code Playgroud)


Caf*_*eek 16

他们实现了所有这些方法,每个方法也将返回RunInstancesRequest对象(aka,this).它被称为Fluent界面