C#基礎增強(2)之密閉類、靜態類及擴展方法

密閉類

簡介

密閉類是被 sealed 關鍵字修飾的類,密閉類不能有子類。通常只有系統的一些基本類聲明爲密閉類,例如 String 類。面試

相關面試題

是否能夠編寫一個類繼承自 String 類?this

咱們能夠查看 String 類的聲明,以下:spa

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

能夠看到,String 類就是一個密閉類,因此它不能夠被繼承。code

靜態類

簡介

使用 static 關鍵字修飾的類就是靜態類,靜態類不能被實例化、不能被繼承且只能定義 static 成員。對象

補充

靜態類不能被繼承的緣由是編譯器會將靜態類識別爲一個密閉類,以下:blog

擴展方法

簡介

擴展方法是 C#3.0  的新特性,可使用它在一個靜態類中爲另外一個類定義方法。繼承

案例

給 String 類擴展一個 IsEmail 方法,用來判斷字符串中是否存在 "@" 字符。ip

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 修飾。字符串

相關文章
相關標籤/搜索