c# - 移植 C# 代码。这是对全局对象的引用吗?
问题描述
我正在尝试将Aether.Physics2D库从 C# 移植到 Xojo。这本质上是 Farseer 物理引擎的调整版本。大部分都完成了,但有一部分源代码我无法解决(可能是因为 C# 不是我的主要语言)。
在Dynamics/Contacts/Contact.cs中有多个对看起来像全局碰撞对象的引用,但我找不到它的定义。例如,在第 405 行,在switch
:
case ContactType.Polygon:
Collision.Collision.CollidePolygons(ref manifold, (PolygonShape)FixtureA.Shape, ref transformA, (PolygonShape)FixtureB.Shape, ref transformB);
break;
我已经移植了Collision
该类及其CollidePolygons
静态方法(在此处定义),但为什么这段代码不只是:
Collision.CollidePolygons(ref manifold, (PolygonShape)FixtureA.Shape, ref transformA, (PolygonShape)FixtureB.Shape, ref transformB);
代替:
Collision.Collision.CollidePolygons(ref manifold, (PolygonShape)FixtureA.Shape, ref transformA, (PolygonShape)FixtureB.Shape, ref transformB);
本质上,为什么有两个 Collision
电话?
任何帮助是极大的赞赏。
解决方案
不,那只是因为它是在名为Collision
的命名空间中调用的类Collision
:
namespace tainicom.Aether.Physics2D.Collision
{
public static class Collision
{
}
}
如果您仍然要移植代码,我强烈建议您修复这个错误。
using
您还可以使用指令更改调用代码:
using Collision = tainicom.Aether.Physics2D.Collision.Collision;
...
// Calling the method is simpler now
Collision.CollidePolygons(...);
实际上,您可能希望为您的别名提供不同的名称:
// TODO: Think of a better name to use :)
using CollisionClass = tainicom.Aether.Physics2D.Collision.Collision;
...
CollisionClass.CollidePolygons(...);
这样,名称Collision
根本不会改变其含义,但您无需在Collision.Collision
任何地方使用。
推荐阅读
- sql-server - MSSQL C# query Only add row if value is unique
- asp.net-core-2.0 - .net 核心托管为 Windows 服务 - 如何使用配置文件?
- unity3d - 在 vuforia 模型目标中使用 unity 如何调整模型的尺寸?
- c# - 如何在c#中获取一段Json?
- c++ - freeimage 写入像素
- unix - Unix:删除文件中的文本匹配模式
- macos - 用于 Mac 的 f3probe?
- google-cloud-platform - Google 部署管理器存储的运行时配置变量显示已损坏
- centos - Plesk 从服务计划中删除托管类型“网站托管”
- java - 什么是通用语言环境数据存储库 (CLDR) - JDK 9