Tuple3.x = Tuple1.x + Tuple2.x;
Tuple3.y = Tuple1.y + Tuple2.y;
我还可以使用另一个结构而不是元组。
没有单线的任何额外工作:
var tuple1 = (x:2,y:4);
var tuple2 = (x:0,y:-1);
var tuple3 = (x: tuple1.x + tuple2.x, y: tuple1.y + tuple2.y);
和
genericMath,后者可用于.NET 7):
public static class TupleExts
{
public static (TX X, TY Y) Add<TX, TY>(this (TX X, TY Y) left, (TX X, TY Y) right)
where TX : IAdditionOperators<TX, TX, TX>
where TY : IAdditionOperators<TY, TY, TY> =>
(left.X + right.X, left.Y + right.Y);
}
var tuple1 = (x:2,y:4);
var tuple2 = (x:0,y:-1);
var tuple3 = tuple1.Add(tuple2);
但是,由于您写道您没有将您的元组定义并超载+
运算符。请参阅操作器过载
文档。一开始:
public class Point
{
public int X { get; set; }
public int Y { get; set; }
public static Point operator +(Point left, Point right) => new Point
{
X = left.X + right.X,
Y = left.Y + right.Y
};
}
然后您将能够使用
+
运算符:
var p = new Point { X = 2, Y = 4 } + new Point { X = 0, Y = -1 };
没有内置的本机内置。您将必须自己编写代码。
但是,如果需要,您可以以扩展方法隐藏代码:
public static (int, int) Add(this (int, int) t1, (int, int) t2) => (t1.Item1+t2.Item1, t1.Item2+t2.Item2);
then你可以
在您的评论中,您说: 我只有几个月的时间
我预测,一旦您编写了第一个扩展方法,“您的生活将永远不会相同”。