在C#中为函数名创建别名

我想在C#中为funcion名称创建一个别名。

除了函数重载有什么办法吗?

public class Test { public void A() { ... } } 

我想打电话给B替换下面的A。

 var test = new Test(); test.B(); 

您可以使用扩展方法

 public static class Extensions { public static void B(this Test t) { tA(); } } 

但它不是别名。 它是一个包装器。


编辑
ps:我同意你的问题的评论者,如果我们知道你真正想做什么,如果我们理解你想要解决的问题,我们就能给出更好的答案。

我真的没有看到产生上述扩展方法的重点。

没人提到我,我感到很惊讶 代表们。 它可能与C#中的方法别名一样接近:

 public class Test { public void A() { } public Action B = A; } 

如果方法A采用int参数并返回一个string ,则代码如下所示:

 public class Test { public string A(int arg) { } public Func B = A; } 

实际上,函数别名更多是C#术语中的委托 (就像C ++中的函数指针一样)。 这是一个:

 public class Test { public void Test() { B += A; } public void A() { ... } public Action B; } 

但是你必须将它称为B.Invoke(),因为它是无参数的。 如果它有一个或多个参数,这不会是一个问题。

C#是面向对象的语言,因此您无法创建“函数别名”。 你只能用类操作。 如前所述,您可以使用扩展方法扩展类,也可以创建派生类并在其中创建新方法,这将调用派生方法:

  class Test { public void A() { MessageBox.Show("Function A"); } } class Test2: Test { public void B() { A(); } } 

但是如果你想在你的初始类Test上调用B() ,你只有一种方法 – 创建扩展方法。

这很有效。

 class Program { delegate void B(); static Test t = new Test(); static B b = tA; static void Main(string[] args) { b(); } } class Test { public void A() { } } 

这是如此古老,但我对一个人为什么想要为方法名称添加别名有一个回应。 它一直在发生。 因为一些开发人员给了一个方法一个没有任何意义的名称,或者它根本没有准确地描述该方法的目的。 在整个旧的,经验丰富的解决方案中,该方法被多次调用。 因此,执行大型重构和重新测试,因为命名不合理的方法无法certificate,只需给它一个有意义的别名。 这样,新代码将来会正确阅读。

即保存网格控件,并且方法名称为IsReferenceSelectedSendEmail。 该名称暗示该方法将识别用户在网格中选择的引用是否是SendEmail。 该方法真正做的是迭代所有引用并确定它们中的任何一个是否是SendEmail。

简单解决方案 将该方法别名为AnyReferenceIsSendEmail,以便将来的代码正确读取:if(AnyReferenceIsSendEmail())…

现在,如果我们可以获得关键字“除非”否定if条件。

IMO