在 Java 中创建对象时,我习惯于以下语法:
objectX1 = new ObjectX(some arguments);
在查看 C# 中的项目时,我遇到了以下代码:
_createSample = new Func<SampleBase>[]
{
() => new SkeletonMappingSample();
}
我需要向我解释两件事。首先,创建一个没有括号和参数列表的对象,而是使用带有表达式的 {} 是如何工作的?
接下来,{}之间的表达式是什么意思?
您找到的代码:
_createSample = new Func<SampleBase>[]
{
() => new SkeletonMappingSample();
}
只是创建数组然后用值初始化它的符号。
这实际上与以下内容相同:
_createSample = new Func<SampleBase>[1];
_createSample[0] = () => new SkeletonMappingSample();
除了在{ }版本中,边界是由编译器根据您在{ }
对于对象:
SomeClass abc = new SomeClass()
{
SomeProperty = "SomeValue",
}
只是一种创建对象然后设置一些属性值的方法,它实际上与:
SomeClass abc = new SomeClass();
abc.SomeProperty = "SomeValue";
此代码创建一个Func数组:_createSample = new Func<SampleBase>[]
然后它使用集合初始化器将一个lambda 表达式 () => new SkeletonMappingSample()实例化为其中的唯一元素(注意大括号,分号是可选的):
{
() => new SkeletonMappingSample();
}
此表达式将在调用时实例化一个新的 SkeletonMappingSample:
var newMappingSample = _createSample[0]();