在下面的代碼中,即使集合聲明爲readonly
,我們也能夠將項目添加到集合中。但它是一個已知的事實,如readonly
修飾符將允許在聲明,初始化表達式或構造函數中初始化該值。 以下可能如何? readonly
修改器如何在不同類型上運行?帶只讀修飾符的集合如何在C#中變得可修改?
class Program
{
static void Main(string[] args)
{
ReadonlyStringHolder stringHolder = new ReadonlyStringHolder();
stringHolder.Item = "Say Hello";//compile time error-Read only field cannot be initialized to
ReadOnlyCollectionHolder collectionHolder = new ReadOnlyCollectionHolder();
collectionHolder.ItemList.Add("A");
collectionHolder.ItemList.Add("B");//No Error -How Is possible for modifying readonly collection
Console.ReadKey();
}
}
public class ReadOnlyCollectionHolder
{
public readonly IList<String> ItemList = new List<String>();
}
public class ReadonlyStringHolder
{
public readonly String Item = "Hello";
}
'IList'本身不能設置。但沒有任何東西阻止你調用它的方法。 –
相關:http://stackoverflow.com/questions/55984/what-is-the-difference-between-const-and-readonly – Anthony
'只讀'很淺 - 它適用於該字段,而不是字段所指的任何內容至。 –