gpt4 book ai didi

c# - 可以在 C# 中缩短数学引用吗?

转载 作者:太空狗 更新时间:2023-10-29 19:48:36 26 4
gpt4 key购买 nike

在 VB.NET 中,我可以通过导入 System.Math 并直接引用它的方法来使我的数学代码更简洁:

Imports System.Math
[...]
Return New Vector3(Sin(az) * Cos(el), Cos(az) * Cos(el), Sin(el))

但我不认为 C# 可以使用类来隐式访问它们的方法,所以我必须这样做:

using System;
[...]
return new Vector3(Math.Sin(az) * Math.Cos(el), Math.Cos(az) * Math.Cos(el), Math.Sin(el));

但这很丑;它需要自己的滚动条!有什么方法可以用 C# 编写看起来像我的 VB.NET 代码的东西吗?我可以为 Sin 和 Cos 编写本地包装器方法,但这不会降低性能(因为函数调用的开销)吗?而且,这将需要为我在每个类中使用的每个数学函数编写包装函数;这也不太理想。

最佳答案

您可以使用 using 指令给 System.Math 一个别名:

using M = System.Math;

return new Vector3(M.Sin(az) * M.Cos(el), M.Cos(az) * M.Cos(el), M.Sin(el));

这是我得到的最好的。

I could write local wrapper methods for Sin and Cos, but wouldn't that reduce performance (because of the overhead of function calls)?

你可以,并且在那个时候你可以使用泛型和其他细节来让它更方便,但你仍然会引用这样的库,除非所有数学都发生在出现这段代码的同一个类中作为方法。

“来自开销的性能”问题的答案是“对于标准应用程序来说,这种简单的东西的额外堆栈帧是不明显的”。如果您陷入困境,那么是的,那将是一个问题。

关于c# - 可以在 C# 中缩短数学引用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11107688/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com