使用**类和**扩展**之间有什么区别吗?

问题描述 投票:-2回答:3

扩展方法是使用类还是扩展类?

Bob叔叔对封闭的定义的扩展是为了“修改类的功能,而无需更改原始代码或二进制(exe或dll)文件。”

扩展方法是扩展类的功能还是仅使用它?!

扩展是否有优势或核心概念?!

c# extension-methods definition open-closed-principle
3个回答
1
投票
让我给你看一个例子。

假设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();

我们设法使我们的生活更轻松,并提供了原始类中不存在的某些功能。


0
投票
扩展方法扩展了

class的功能,而无需使用魔术this Type instance模式作为第一个参数inherit此类,就像您将方法添加到该类作为唯一的非虚拟方法,同时是私有和公共的,因为仅适用于此类型。

它们扩展了一个类,与继承有细微的差别,因为抽象中存在二分法。它们添加操作,即功能性,例如,扩展sealed class或无需继承任何类的类都是有用的,因此扩展名可用于任何用户而无需创建新的子类型,因此您可以使用它们而无需更改您的子类代码。

-1
投票
uses该类即是如此。但是,调用此方法的方式与将类称为

extended相同。

© www.soinside.com 2019 - 2024. All rights reserved.