我正在写array-like一个类,所以我希望初始化我的类的实例的过程尽可能接近数组的通常初始化
就在这个问题上:
我们可以一次设置数组值,用花括号:
int[] a = new int[] { 1, 2, 3 };
要在自定义类中实现此行为,您需要实现方法Add,然后是以下代码:
MyClass my = new MyClass() { 1, 2, 3 };
实际会部署在
MyClass my = new MyClass();
my.Add(1);
my.Add(2);
my.Add(3);
但是,正如我所说,这将需要创建一个我想避免的公共方法,因为它不符合类的逻辑Add
到目前为止,我看到了一个解决问题的方法:
创建一个方法Add,但是给它添加BrowsableAttribute(false)属性,这样普通用户至少在可用列表中看不到它
但是,也许有一个更优雅的解决方案,我想问你。
BrowsableAttribute 用处不大,似乎一点作用都没有。至少使用EditorBrowsableAttribute,如果该类位于另一个程序集中,它将从 IntelliSense 中删除该方法。更好的是,如果您想要从数组创建类的紧凑语法,只需覆盖转换运算符: