函数参数C#中的这个修饰符
本文关键字:参数 函数 | 更新日期: 2023-09-27 18:26:33
我有以下函数
public static string TestFunc(this DateTime dt)
{
}
这里的"this"代表什么?
它使这个方法成为一个扩展方法。它扩展了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...