是否可以编写.member并假设C#中的类/结构

时间:2009-06-18 00:29:23

标签: c#

我想做类似下面的事情

using (MyClass)
{
.a = a;
.title = sz;
.abc = paramEFG
etc = .lol;
}

这可能在C#中吗?显然不是那种语法,但可能是另一个关键词?

5 个答案:

答案 0 :(得分:3)

嗯,据我所知,并非完全以这种方式,尽管对象初始化器接近:

var foo = new MyClass
{
  a = a,
  title = sz,
  abc = paramEFG
};

但显然,它们只能在调用构造函数后直接创建对象和初始化属性,而不是像VB的With那样(它几乎都是你在问题中描述的语法)。

答案 1 :(得分:1)

不,这种语言不存在。您可能正在考虑使用 with 关键字的JavaScript或Visual Basic?

答案 2 :(得分:1)

C#不支持。 VB使用With关键字。

如果MyClass很长(例如this.Controls[0].Controls[3].Font),您可以为其指定一个名称较短的局部变量。

如果它是一个长类名(例如Dictionary<RichTextBox, List<GroupPanel>>),您可以使用using语句创建一个别名,如下所示:

using MyThingy = System.Collections.Generic.Dictionary<System.Windows.Forms.RichTextBox, System.Collections.Generic.List<System.Windows.Forms.GroupPanel>>;

答案 3 :(得分:0)

你不能在C#中做到这一点,它更像是VB的东西。但是,您可以设计一个流畅的界面:

var c = MyClass.Build()
.SetA(a)
.SetTitle(sz);
.SetParam(paramEFG); 

或者您可以使用C#3语法并执行

var c = new MyClass() {
  A = a, 
  Title = sz 
}

答案 4 :(得分:0)

看起来你要求的功能就像VB.Net的With运算符。

With someClass
 .Name = "foo"
 .IntValue = 42
End With

如果是这样,在C#中不可能做到这一点。