2012-03-02 43 views
1

我有以下功能此修饰符在函数的参数C#

public static string TestFunc(this DateTime dt) 
{ 

} 

什么“这个”站在这里呢?

+0

可能重复(http://stackoverflow.com/questions/ [在C#这个参数修改?] 4700016/this-parameter-modifier-in-c) – 2012-03-02 19:51:47

+0

如果你要纠正它,你至少应该纠正语法,......它应该读“这个”在这种情况下代表什么“?反对这个“什么”在这里? – 2012-03-02 19:52:21

回答

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

这是用来定义扩展方法的语法。它可以被称为一个正常的静态函数:

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

或日期时间的“延伸”:

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

你已经找到了DateTime类型的extension method

所以现在,没有任何改变现有DateTime代码,你可以做以下内容:

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