Java 7 现在有这种“钻石语法”,我可以在其中执行类似的操作ArrayList<int> = new ArrayList<>();
我想知道 C# 是否有我可以利用的类似语法。
例如,我有一个课程的这一部分:
class MyClass
{
public List<double[][]> Prototypes; // each prototype is a array of array of doubles
public MyClass()
{
Prototypes = new List<double[][]>; // I'd rather do List<>, in case I change the representation of a prototype later
}
}
有谁知道这是否可能,如果可以,我该如何使用它?
不,没有什么比 C# 中的菱形语法更相似的了。最接近的你可能会得到这样的东西:
public static class Lists
{
public static List<T> NewList<T>(List<T> ignored)
{
return new List<T>();
}
}
Then:
public MyClass()
{
ProtoTypes = Lists.NewList(ProtoTypes);
}
这只是使用普通的泛型类型推断来获取方法T
。请注意,value参数的类型被完全忽略——只有编译时类型才是重要的。
我个人认为这非常丑陋,我会直接使用构造函数。如果你改变类型ProtoTypes
编译器会发现差异,并且不需要很长时间就能修复它......
编辑:要考虑的两种选择:
-
类似的方法,但带有out
范围:
public static class Lists
{
public static void NewList<T>(out List<T> list)
{
list = new List<T>();
}
}
...
Lists.NewList(out ProtoTypes);
-
相同的方法,但作为扩展方法,名称为New
:
public static class Lists
{
public static List<T> New<T>(this List<T> list)
{
return new List<T>();
}
}
...
ProtoTypes = ProtoTypes.New();
与这两种方法相比,我更喜欢第一种方法:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)