自定义参数
本文关键字:参数 自定义 | 更新日期: 2023-09-27 18:07:40
我已经用c#创建了一个非常简单的向量轴类。
通常是MyAxis abc = new MyAxis(p,x,y,z);
(p点)和(x,y,z double);
但是我想以我自己的方式调用构造函数,例如
MyAxis abc = new MyAxis([0 0 0],[0 0 1]); // Looks like MatLab;
我知道我可以用字符串操作或列表或任何东西来做到这一点,但我想避免创建新对象并将它们传递给构造函数。
我还想避免..new MyAxis(a,b,c,d,e,f)
或...new MyAxis(new Point(x,y,z),...);
您希望更改c#使用的语法,但这是不可能的。我相信最接近的是
MyAxis abc = new MyAxis(new []{0,0,0}, new[]{0,0,1});
但这并不是你想要的。我想这是最好的了
你不能这么做,除非你传入一个双精度/整型数组
new MyAxis(new int[]{1, 2, 3},new int[]{1, 2, 3});
或者像你说的一个新对象,比如new Point (x, y, z)(我知道你说你想避免这种情况,但是使用OO语言,它确实"工作")
new MyAxis (new point(1, 2, 3), new point(5, 6, 7));
如何让您的构造函数看起来像MyAxis(double[] p, double[] v)
你可以这样初始化你的对象:
MyAxis abc = new MyAxis({0, 0, 0},{0, 0, 1}); // Looks _almost_ like MatLab;
构造函数显然应该验证数组包含3个元素(或者至少元素数量相等并且支持N维向量)
你可以尝试这样做:
MyAxis abc = new MyAxis(new[] { 0, 0, 0 }, new[] { 0.1, 0.2, 1.1} );
然后在MyAxis的构造函数中这样做:
public MyAxis(new int[] points, new double[] doubles)
{
Point p = new Point(points[0], points[1], points[2]);
double x = doubles[0],
y = doubles[1],
z = doubles[2];
...
}
如果你愿意,你也可以创建多个构造函数
public MyAxis(int a, int b, int c, int d, int e, int f)
{
}
public MyAxis(Point a, Point b)
{
}
public MyAxis(Point p, double[] doubles)
{
}
等。
不幸的是,没有办法创建自定义语法:(
这样行吗?
public someClass( int[] input1, int[] input2 )
someClass temp = new someClass(new int[] { 1, 0, 1 }, new int[] { 1, 0, 1 });