扩展或静态功能?

ica*_*tan 4 c# static function

我正在开发一个中等规模的项目,其中的表现非常重要.我找不到(实际上无法理解)静态和扩展函数之间的区别.

例如:

public static class My
{
    public static Vector2 MyTransform(this Vector2 point, float Rotation)
    {
        //....
       return MyVector;
    }

    public static Vector2 MyTransform(Vector2 point, float Rotation)
    {
        //....
       return MyVector;
    } 
}
Run Code Online (Sandbox Code Playgroud)

使用这些函数仅在其实例上调用扩展函数:

  1. Vector2 calc = myVector.MyTransform(0.45f);
  2. Vector2 calc = My.MyTransform(myVector,0.45f)

您更喜欢使用哪一种,或者更喜欢使用哪种?为什么?

谢谢 !

Jon*_*eet 9

将有没有在性能上的差异-以延长方法的调用

var result = foo.MyTransform(rotation);
Run Code Online (Sandbox Code Playgroud)

将简单地由编译器转换为:

var result = My.MyTransform(foo, rotation);
Run Code Online (Sandbox Code Playgroud)

现在,并不是说扩展方法应该在任何地方使用- 但看起来这是一个合适的用例,除非你实际上可以使它成为Rotation上的实例方法:

var result = rotation.Apply(foo);
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,我强烈建议您重新考虑您的名字,以遵循.NET命名约定.)


Dan*_*rth 5

扩展方法静态方法.它们只是语法糖.编译器将创建对静态方法的正常调用.这意味着,它们是等价的.