侧边栏壁纸
博主头像
张种恩博主等级

一个能运维的 JPG 搬运工

  • 累计撰写 705 篇文章
  • 累计创建 61 个标签
  • 累计收到 25 条评论

目 录CONTENT

文章目录
C#

C#基础加强(2)之密闭类、静态类及扩展方法

张种恩
2019-07-18 / 0 评论 / 0 点赞 / 218 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2020-02-25,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

密闭类

简介

密闭类是被 sealed 关键字修饰的类,密闭类不能有子类。一般只有系统的一些基本类声明为密闭类,例如 String 类。

相关面试题

是否可以编写一个类继承自 String 类?

我们可以查看 String 类的声明,如下:

[ComVisible(true)]
[__DynamicallyInvokable]
[Serializable]public sealed class String : IComparable, ICloneable, IConvertible, IEnumerable, IComparable<string>, IEnumerable<char>, IEquatable<string>

可以看到,String 类就是一个密闭类,所以它不可以被继承。

静态类

简介

使用 static 关键字修饰的类就是静态类,静态类不能被实例化、不能被继承且只能定义 static 成员。

补充

静态类不能被继承的原因是编译器会将静态类识别为一个密闭类,如下:

image.png

扩展方法

简介

扩展方法是 C#3.0 的新特性,可以使用它在一个静态类中为另一个类定义方法。

案例

String 类扩展一个 IsEmail 方法,用来判断字符串中是否存在 @ 字符。

public static class StringExt
{
    /**
     * 扩展方法定义
     * str 参数代指调用该方法的对象
     */
    public static bool IsEmail(this String str)
    {
        return str.Contains("@");
    }
}

[TestFixture]
public class Tests
{
    [Test]
    public void Test()
    {
        string email = "zze@foxmail.com";
        // 使用扩展方法
        var isEmail = email.IsEmail();
        Console.WriteLine(isEmail);
        // true
    }
}

第一个参数是被扩展类型,需使用 this 修饰。

0

评论区