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

本文关键字:参数 函数 | 更新日期: 2023-09-27 18:26:33

我有以下函数

public static string TestFunc(this DateTime dt)
{
}

这里的"this"代表什么?

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

它使这个方法成为一个扩展方法。它扩展了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,您将看到许多扩展方法(在intelligense中)扩展实现IEnumerable<T>的各种集合。对于成员列表中的扩展方法,将显示一个蓝色箭头。

在此上下文中,它用于定义扩展方法。

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

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

或作为DateTime:的"扩展"

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

用于扩展DateTime类型,仅此而已。

扩展方法

您已经找到了DateTime类型的扩展方法。

因此,现在,在不更改现有DateTime代码的情况下,您可以执行以下操作:

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