sealed 關鍵字最主要的目的就是防止類別被繼承,常用在 DTO 等確定不會被繼承的類別上。
用法:
如果在抽象類別上使用 sealed 時會拋出下面錯誤:
有個 Youtube 影片在測試有無加上 sealed 關鍵字的性能差距,建立物件速度有可能差距到 20 倍(0.0115 ns 和 0.0057 ns),但其實時間小到可以忽略不計。
有些語言預設是無法被繼承,也有許多人在討論 C# 類別預設是否該是 sealed,不過最有差別的應該就是在第三方類別庫上面了。假設安裝了一個第三方類別庫,他的功能很強大,但是無法被繼承,自己不能自訂類別來修改,應該會非常的痛苦。
參考資料:
Why aren't classes sealed by default?
Why all your classes should be sealed by default in C#
用法:
public sealed class UserDataDto
{
public int Id { get; set; }
public string Name { get; set; }
}
如果在抽象類別上使用 sealed 時會拋出下面錯誤:
Class 'RuyutTest.Dto.UserDataDto' cannot be both 'abstract' and 'sealed'
有個 Youtube 影片在測試有無加上 sealed 關鍵字的性能差距,建立物件速度有可能差距到 20 倍(0.0115 ns 和 0.0057 ns),但其實時間小到可以忽略不計。
有些語言預設是無法被繼承,也有許多人在討論 C# 類別預設是否該是 sealed,不過最有差別的應該就是在第三方類別庫上面了。假設安裝了一個第三方類別庫,他的功能很強大,但是無法被繼承,自己不能自訂類別來修改,應該會非常的痛苦。
參考資料:
Why aren't classes sealed by default?
Why all your classes should be sealed by default in C#
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com