111,119
社区成员
发帖
与我相关
我的任务
分享 private Point 直线上的垂直交点(int x1, int x2, int y1, int y2, int pointX, int pointY)
{
begin:
if (Math.Abs(x1 - x2) <= 1 && Math.Abs(y1 - y2) <= 1)
return new Point((x1 + x2 + 0.0) / 2, (y1 + y2 + 0.0) / 2);
var mx = (x1 + x2) >> 1; //中点坐标x
var my = (y1 + y2) >> 1; //中点坐标y
var dist1 = Math.Abs(x1 - pointX) + Math.Abs(y1 - pointY);
var dist2 = Math.Abs(x2 - pointX) + Math.Abs(y2 - pointY);
if (dist1 < dist2)
{
x2 = mx;
y2 = my;
}
else
{
x1 = mx;
y1 = my;
}
goto begin;
}
或者类似这样的代码 public static T VisitsToAncestors<T>(this FrameworkElement from) where T : FrameworkElement
{
begin:
var parent = from.Parent as FrameworkElement;
if (parent == null)
return null;
else if (parent is T)
return (T)parent;
else
{
from = parent;
goto begin;
}
}
由于简单的一个循环语句根本是把代码搞乱,只有goto更清晰。 loop:
Console.WriteLine("hi");
goto loop;