我想写填充多维矩形数组的扩展方法.我知道如何为具有固定数量测量的阵列做到这一点:
public static void Fill<T>(this T[] source, T value)
{
for (int i = 0; i < source.Length; i++)
source[i] = value;
}
public static void Fill<T>(this T[,] source, T value)
{
for (int i = 0; i < source.GetLength(0); i++)
for (int j = 0; j < source.GetLength(1); j++)
source[i, j] = value;
}
public static void Fill<T>(this T[,,] source, T value)
{
for (int i = 0; i < source.GetLength(0); i++)
for (int j = 0; j < …Run Code Online (Sandbox Code Playgroud) 在"CLR Via C#"的第八章(p189)中,杰弗里里希特说:
"Type构造函数可以应用于接口(尽管C#不允许这样做)"
我做了一些研究,我似乎无法找到为什么接口需要任何语言的类型构造函数.这似乎是你在CLR中明确禁止的东西.
什么时候需要它,为什么可能呢?
对于我只使用一次实例化对象的快速任务,我知道我可以执行以下操作:
int FooBarResult = (new Foo()).Bar();
Run Code Online (Sandbox Code Playgroud)
我说这对于非一次性物品是完全可以接受的,并且比替代物更具可读性:
Foo MyOnceUsedFoo = new Foo();
int FooBarResult = MyOnceUsedFoo.Bar();
Run Code Online (Sandbox Code Playgroud)
你用哪个,为什么?
你会在生产应用程序中使用这种类型的匿名实例化吗?
偏好:带括号"(new Foo()).Bar();" 或没有"new Foo().Bar();"?
(编辑从Random类抽象问题)