扩展方法是使用类还是扩展类?
Bob叔叔对封闭的定义的扩展是为了“修改类的功能,而无需更改原始代码或二进制(exe或dll)文件。”
扩展方法是扩展类的功能还是仅使用它?!
扩展是否有优势或核心概念?!
假设Person
类的结构如下:
public class Person
{
public string FirstName {get; set;}
public string LastName {get; set;}
public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}
现在,我们想在整个代码中的各个位置显示其全名,但我们不想像这样继续串联它:
var p = new Person("John", "Doe");
var fullName = $"{p.FirstName} {p.LastName}";
我们可以在静态类中编写扩展方法,该方法为我们返回此全名字符串:
public static class ExtensionMethods
{
public static string GetFullName(this Person p)
{
return $"{p.FirstName} {p.LastName}";
}
}
现在您可以将原始代码更改为此:
var p = new Person("John", "Doe");
var fullName = p.GetFullName();
我们设法使我们的生活更轻松,并提供了原始类中不存在的某些功能。
class的功能,而无需使用魔术this Type instance
模式作为第一个参数inherit此类,就像您将方法添加到该类作为唯一的非虚拟方法,同时是私有和公共的,因为仅适用于此类型。
sealed class
或无需继承任何类的类都是有用的,因此扩展名可用于任何用户而无需创建新的子类型,因此您可以使用它们而无需更改您的子类代码。extended相同。