我想学习C#的所有便利特性以及它们如何映射到C#。
例如,自动属性:
public string Foo { get; set; }
...转换为类似这样的内容:
string <Foo>k__BackingField;
[CompilerGenerated]
public string Foo {
get { return this.<Foo>k__BackingField; }
set { this.<Foo>k__BackingField = value; }
}
foreach循环:
foreach(char c in "Hello") {
Console.WriteLine(c);
}
...映射到这种形式(我想):
CharEnumerator en;
try {
en = "Hello".GetEnumerator();
while (en.MoveNext()) {
char c = en.Current;
Console.WriteLine(c);
}
} finally {
IDisposable disp = en as IDisposable;
if (disp != null)
disp.Dispose();
}
使用枚举器进行释放可以使foreach
在处理非托管资源时非常有用,例如循环遍历文件中的行或数据库中的记录。
我认为对这些高级功能的充分理解可以帮助我们编写更好的代码。C#还有哪些方便的功能,它们与C#的映射方式是什么?
foreach
循环中,重要的是将char c
放在循环外部,以解释臭名昭著的捕获问题。 - Marc Gravell