在C#中,当我将一个int值括在括号中并键入点时,我得到一个可以对该int值执行的函数列表
string a = (12).ToString();
我的问题是,我们如何定义这样的自定义函数?例如我想定义一个函数toDateTime,它可以像这样工作
DateTime dt = ("12/12/12").toDateTime();
我完全明白这可以通过常规方式完成
DateTime dt = toDateTime("12/12/12");
我只是好奇它是如何通过其他方式完成的。
答案 0 :(得分:6)
您可以创建Extension Method
也许是这样的:
public static class MyExtensions
{
public static DateTime ToDateTime(this String str)
{
// return something
}
}
答案 1 :(得分:6)
您所描述的是extension methods。
这些是静态类和方法,IDE(Visual Studio)使它们看起来像是扩展类型的一部分。
请注意,不需要将该类型括在括号中:
string a = 12.ToString(); // not an extension method - it is defined on Object
答案 2 :(得分:4)
你不能:这些基本类型的函数,以及在Object中定义的ToString
等函数,都是由框架提供的。但是,您可以使用extension methods来获得(或多或少)相同的结果。
扩展方法是静态类中的静态函数,IDE(VS)和编译器将其视为由第一个参数(标有this
)定义的类的成员函数。它们实际上与添加成员函数不同:它们的分辨率和优先级不同。
答案 3 :(得分:2)
您可以使用扩展方法
public static DateTime ToDateTime(this string datestring)
{
return DateTime.Parse(datestring);
}
扩展方法可以打包在static class
示例:
static class Program
{
public static DateTime ToDateTime(this string datestring)
{
return DateTime.Parse(datestring);
}
static void Main(string[] args)
{
DateTime date = "12/12/12".ToDateTime();
}
}