函数参数C#中的这个修饰符

时间:2012-03-02 19:45:49

标签: c#

我有以下功能

public static string TestFunc(this DateTime dt)
{

}

“这个”代表什么?

5 个答案:

答案 0 :(得分:3)

在此上下文中,它用于定义extension method

答案 1 :(得分:3)

它使这个方法成为一种扩展方法。它扩展了DateTime结构。

你可以这样称呼它

DateTime dt = DateTime.Now;
string s = dt.TestFunc();

编译器将内部的最后一行重写为

string s = TestFunc(dt);

如果扩展方法声明为此

public static string TestFunc(this DateTime dt, string format)
{      
}  
你可以这样称呼

string s = dt.TestFunc("dd.MM.YY");

扩展方法必须在静态类中声明。如果声明类的命名空间可用(因为它位于相同的命名空间中,或者因为您使用using导入了命名空间),它们可以在其他类中使用。如果您导入System.Linq,您将看到许多扩展方法(在intellisense中),扩展了实现IEnumerable<T>的各种集合。在成员列表中显示扩展方法的蓝色箭头。

答案 2 :(得分:2)

这是用于定义Extension方法的语法。它可以被称为普通静态函数:

DateTime dt = DateTime.Today;
string s = ClassName.TestFunc(dt);

或作为DateTime的“扩展名”:

DateTime dt = DateTime.Today;
string s = dt.TestFunc();

答案 3 :(得分:1)

用于扩展DateTime类型,即全部。

Extension Methods

答案 4 :(得分:0)

您找到DateTime类型的extension method

现在,如果不对现有DateTime代码进行任何更改,您可以执行以下操作:

DateTime MyDT = DateTime.Now;
string MyStr = MyDT.TestFunc();
// continue using MyStr as you wish...