我有一個帶有標題引數的建構式的 Book 類:
public class Book
public Book (string title)
{
this.Title = title;
}
我需要通過呼叫 Book 建構式來提供 Title 的(只讀屬性)值。我嘗試了以下但不確定這是否正確,因為我理解只讀屬性應該只有一個 getter。
public string Title { get; private set {} }
我需要幫助來完成/更正此代碼塊。先感謝您。
uj5u.com熱心網友回復:
正如您目前所定義的Title,它可以從內部的任何地方進行設定Book。也就是說,它不是只讀的,只是私有的。
要使其只讀(與readonly欄位上的關鍵字類似),您可以簡單地將其宣告為:
public string Title { get; }
然后您可以使用當前必須初始化的建構式代碼:
public Book (string title)
{
this.Title = title;
}
正如 Ran 在另一個答案中指出的那樣,C#9 引入了init修飾符的概念。與此不同的init是,雖然該屬性仍然只能設定一次,但可以從建構式外部對其進行初始化。例如,如果您想使用物件初始值設定項模式,這很有用。
uj5u.com熱心網友回復:
C# 9 引入了init關鍵字,它是 的變體set,它允許我們這樣做。的init存取器實際上是一個變體set存取只能物件初始化程序中被稱為
public class Book
{
public string Title { get; init };
}
更多關于init- https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-9.0/init
uj5u.com熱心網友回復:
任何只讀欄位都可以在建構式中設定,構造完成后該欄位將變為不可變的。換句話說,你不需要做任何花哨的事情,建構式會處理它。
uj5u.com熱心網友回復:
只是做一個interface你的
public string Title { get; }
然后將此介面實作到您的類/類中并執行一個簡單的操作field(在建構式之外,通過您的方法):
public string Title => "xyz"; //(or string.Empty)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396919.html
上一篇:Pig安裝錯誤:ERRORpig.Main:ERROR2998:未處理的內部錯誤
下一篇:在變數中宣告類名
