2023年,第30周,第2篇文章。给自己一个目标,然后坚持总会有收货,不信你试试!
本篇文章主要简单讲讲,使用this进行扩展方法以及静态类和静态成员
目录
- 一、this扩展
- 1、扩展条件
- 2、举例代码
- 二、静态知识点
- 1、基本概念
- 2、举例说明
- 3、静态成员
- 3.1、静态字段(Static Fields)
- 3.2、静态属性(Static Properties)
- 3.3、静态方法(Static Methods)
- 3.4、静态构造函数(Static Constructors)
- 3.4、静态事件(Static Events)
- 3.6、嵌套类型(Nested Types)
一、this扩展
在C#中,可以通过扩展方法和扩展属性来向现有的类添加新的方法和属性。扩展方法允许我们像调用实例方法一样调用它们,而扩展属性允许我们像使用普通属性一样使用它们。
1、扩展条件
要创建扩展方法和扩展属性,需要满足以下条件:
1)创建一个静态类,并将其标记为static
。
2)在该类中创建一个静态方法,该方法将是我们要添加到现有类的扩展方法。方法的第一个参数必须使用this
关键字标记,并且指定要扩展的类的类型。这个参数表示我们使用扩展方法的实例。
3)对于扩展属性,我们可以通过创建一个静态类和一个静态方法来模拟扩展属性的行为。在方法内部,可以通过方法的名称和参数列表来实现属性的访问和值的返回。
2、举例代码
以下是一个简单的示例,展示了如何使用扩展方法和扩展属性:
// 扩展方法
public static class StringExtensions
{
public static bool IsNullOrEmpty(this string str)
{
return string.IsNullOrEmpty(str);
}
}
// 扩展属性
public static class MathExtensions
{
public static double PI
{
get { return 3.14159; }
}
}
// 使用扩展方法和属性
public class Program
{
static void Main(string[] args)
{
string str = "Hello, World!";
Console.WriteLine(str.IsNullOrEmpty()); // 调用扩展方法
Console.WriteLine(MathExtensions.PI); // 访问扩展属性
}
}
在上述示例中,我们创建了一个StringExtensions
类,其中包含一个扩展方法IsNullOrEmpty
,用于字符串的空检查。我们还创建了一个MathExtensions
类,其中包含一个扩展属性PI
,用于获取圆周率的值。
请注意,要使用扩展方法和扩展属性,需要引入包含这些类的命名空间。在上面的示例中,我们需要引入System
命名空间。
二、静态知识点
1、基本概念
1)在C#中,静态类是一种特殊类型的类,它只包含静态成员(静态方法、静态属性、静态字段)并且不能被实例化。
2)静态类不能被用作基类,也不能从它派生出其他类。
3)静态类主要用于提供一组相关的公共功能,不需要实例化该类即可访问这些功能。
4)它们通常用于实现工具类、辅助类或者包含只能由类本身调用的方法。
2、举例说明
以下是一个简单的静态类示例:
public static class MathUtils
{
public static int Add(int a, int b)
{
return a + b;
}
public static int Multiply(int a, int b)
{
return a * b;
}
}
1)在上述示例中,MathUtils
是一个静态类,它包含了两个静态方法Add
和Multiply
。
2)这些方法可以直接通过类名调用,而不需要创建类的实例。
3)使用静态类的好处是可以避免创建实例的开销,并且将相关的功能组织在一个类中,使代码更加清晰和易于维护。
4)此外,静态类中的成员在整个应用程序中都是可用的,无需传递实例参数。
5)需要注意的是,由于静态类不能被实例化,因此静态类的成员只能访问静态成员和常量,不能访问实例成员或非静态成员。
6)静态类的成员是通过类名直接调用的,无需使用实例引用。
总之,静态类是一种只包含静态成员、不能被实例化并且用于组织相关功能的特殊类。它在提供公共功能、避免创建实例开销等方面有着重要作用。
3、静态成员
静态类可以包含以下类型的成员:
3.1、静态字段(Static Fields)
静态字段是静态类中的变量,它们在整个应用程序中只有一个副本。静态字段可以存储共享数据,并在类的所有实例之间共享。它们被标记为static
关键字,并且可以通过类名直接访问。
3.2、静态属性(Static Properties)
静态属性用于公开静态类中的数据。它们提供了对私有静态字段的访问,并允许进行读取、写入操作。静态属性定义了一个访问器方法,用于获取和设置属性的值。
3.3、静态方法(Static Methods)
静态方法是静态类中的方法,它们可以直接通过类名调用,而不需要创建类的实例。静态方法不能访问非静态成员,但可以访问同一类中的其他静态成员。
3.4、静态构造函数(Static Constructors)
静态构造函数是静态类中的特殊方法。它们在类被加载时自动调用,用于执行静态成员的初始化操作。静态构造函数没有参数,并且无法手动调用。
3.4、静态事件(Static Events)
静态事件用于在静态类中定义和处理事件。它们与普通事件类似,但只能在静态类范围内访问。
3.6、嵌套类型(Nested Types)
静态类中可以包含其他类、结构体、枚举或接口,使得这些类型在静态类的范围内具有局部性。
总结起来,静态类的成员包括静态字段、静态属性、静态方法、静态构造函数、静态事件以及嵌套类型。这些成员允许在不创建类的实例的情况下直接使用静态类的功能。