c#入门-静态引用,扩展方法

静态引用

声明静态引用

引用命名空间时,可以在using后面加static修饰符。
然后把要引用的命名空间改为带命名空间的一个具体的类。
这称为静态引用。

using static System.Int32;
using static System.Console;
int a = Parse(ReadLine());

静态引用的效果

静态引用一个类后,可以直接使用这个类下的所有静态成员,包括:

  • 静态成员
  • 常量
  • 枚举值
  • 嵌套类

当然,如果引用的类中有同名的静态成员,还是需要通过类名来调用。
静态引用并不能使用别名。
c#入门-静态引用,扩展方法_第1张图片

扩展方法

声明扩展方法

在顶级(不是嵌套类)的静态类中,可以声明扩展方法。
声明扩展方法的语法是:
声明一个普通的带参数的静态方法,把第一个参数的类型前面加上关键字this。

static class Tesk
{
	public static int ToInt32(this string s)
	{
		return int.Parse(s);
	}
	public static bool IsNull(this string s)
	{
		return s == null || s == "";
	}
}

使用扩展方法

扩展方法除了能像原本的静态方法一样使用,还能直接从扩展的类型的实例上调用。
例如,这两个方法加了this的都是string类型。
那么声明一个string类型,然后你会发现,这个实例可以点出来扩展方法

string s = null;
s.ToInt32();

扩展方法的this参数就是调用者本身。所以需要填的参数列表需要省略第一个参数。

扩展方法的特点

扩展方法和直接调用静态方法的本质是一样的,所以扩展方法相较于正真的实例方法:

  • 在实例为null时,进入扩展方法不会报错(如果扩展方法里访问了实例的内容,还是会报错)
  • 可以为枚举添加方法
  • 在实例方法本身有同名同参数列表的方法时,扩展方法无效。
  • 在有多个同名同参数列表的方法时,无法以扩展方法形式调用。

你可能感兴趣的:(#,面向对象,c#)