Obtient ou définit une valeur indiquant si l'instance de NameObjectCollectionBase est en lecture seule.
Assembly : System (dans System.dll)
Protected Property IsReadOnly As Boolean Get Set
protected bool IsReadOnly { get; set; }
protected: property bool IsReadOnly { bool get (); void set (bool value); }
member IsReadOnly : bool with get, set
Valeur de propriété
Type : System.Booleantrue si l'instance du NameObjectCollectionBase est en lecture seule ; sinon, false.
Une collection en lecture seule n'autorise pas l'ajout, la suppression ou la modification d'éléments après sa création.
Une collection en lecture seule est simplement une collection dotée d'un wrapper interdisant toute modification de la collection. Par conséquent, si la collection sous-jacente est modifiée, la collection en lecture seule reflète ces modifications.
La récupération de la valeur de cette propriété est une opération O(1).
L'exemple de code suivant montre comment créer une collection en lecture seule.
Imports System Imports System.Collections Imports System.Collections.Specialized Public Class MyCollection Inherits NameObjectCollectionBase Private _de As New DictionaryEntry() ' Gets a key-and-value pair (DictionaryEntry) using an index. Default Public ReadOnly Property Item(index As Integer) As DictionaryEntry Get _de.Key = Me.BaseGetKey(index) _de.Value = Me.BaseGet(index) Return _de End Get End Property ' Adds elements from an IDictionary into the new collection. Public Sub New(d As IDictionary, bReadOnly As [Boolean]) Dim de As DictionaryEntry For Each de In d Me.BaseAdd(CType(de.Key, [String]), de.Value) Next de Me.IsReadOnly = bReadOnly End Sub 'New ' Adds an entry to the collection. Public Sub Add(key As [String], value As [Object]) Me.BaseAdd(key, value) End Sub 'Add End Class 'MyCollection Public Class SamplesNameObjectCollectionBase Public Shared Sub Main() ' Creates and initializes a new MyCollection that is read-only. Dim d = New ListDictionary() d.Add("red", "apple") d.Add("yellow", "banana") d.Add("green", "pear") Dim myROCol As New MyCollection(d, True) ' Tries to add a new item. Try myROCol.Add("blue", "sky") Catch e As NotSupportedException Console.WriteLine(e.ToString()) End Try ' Displays the keys and values of the MyCollection. Console.WriteLine("Read-Only Collection:") PrintKeysAndValues(myROCol) End Sub 'Main Public Shared Sub PrintKeysAndValues(myCol As MyCollection) Dim i As Integer For i = 0 To myCol.Count - 1 Console.WriteLine("[{0}] : {1}, {2}", i, myCol(i).Key, myCol(i).Value) Next i End Sub 'PrintKeysAndValues End Class 'SamplesNameObjectCollectionBase 'This code produces the following output. ' 'System.NotSupportedException: Collection is read-only. ' at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(String name, Object value) ' at SamplesNameObjectCollectionBase.Main() 'Read-Only Collection: '[0] : red, apple '[1] : yellow, banana '[2] : green, pear
using System; using System.Collections; using System.Collections.Specialized; public class MyCollection : NameObjectCollectionBase { private DictionaryEntry _de = new DictionaryEntry(); // Gets a key-and-value pair (DictionaryEntry) using an index. public DictionaryEntry this[ int index ] { get { _de.Key = this.BaseGetKey( index ); _de.Value = this.BaseGet( index ); return( _de ); } } // Adds elements from an IDictionary into the new collection. public MyCollection( IDictionary d, Boolean bReadOnly ) { foreach ( DictionaryEntry de in d ) { this.BaseAdd( (String) de.Key, de.Value ); } this.IsReadOnly = bReadOnly; } // Adds an entry to the collection. public void Add( String key, Object value ) { this.BaseAdd( key, value ); } } public class SamplesNameObjectCollectionBase { public static void Main() { // Creates and initializes a new MyCollection that is read-only. IDictionary d = new ListDictionary(); d.Add( "red", "apple" ); d.Add( "yellow", "banana" ); d.Add( "green", "pear" ); MyCollection myROCol = new MyCollection( d, true ); // Tries to add a new item. try { myROCol.Add( "blue", "sky" ); } catch ( NotSupportedException e ) { Console.WriteLine( e.ToString() ); } // Displays the keys and values of the MyCollection. Console.WriteLine( "Read-Only Collection:" ); PrintKeysAndValues( myROCol ); } public static void PrintKeysAndValues( MyCollection myCol ) { for ( int i = 0; i < myCol.Count; i++ ) { Console.WriteLine( "[{0}] : {1}, {2}", i, myCol[i].Key, myCol[i].Value ); } } } /* This code produces the following output. System.NotSupportedException: Collection is read-only. at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(String name, Object value) at SamplesNameObjectCollectionBase.Main() Read-Only Collection: [0] : red, apple [1] : yellow, banana [2] : green, pear */
#using <System.dll> using namespace System; using namespace System::Collections; using namespace System::Collections::Specialized; public ref class MyCollection : public NameObjectCollectionBase { private: DictionaryEntry^ _de; // Gets a key-and-value pair (DictionaryEntry) using an index. public: property DictionaryEntry^ default[ int ] { DictionaryEntry^ get( int index ) { _de->Key = this->BaseGetKey( index ); _de->Value = this->BaseGet( index ); return( _de ); } } // Adds elements from an IDictionary into the new collection. MyCollection( IDictionary^ d, Boolean bReadOnly ) { _de = gcnew DictionaryEntry(); for each ( DictionaryEntry^ de in d ) { this->BaseAdd( (String^) de->Key, de->Value ); } this->IsReadOnly = bReadOnly; } // Adds an entry to the collection. void Add( String^ key, Object^ value ) { this->BaseAdd( key, value ); } }; public ref class SamplesNameObjectCollectionBase { public: static void Main() { // Creates and initializes a new MyCollection that is read-only. IDictionary^ d = gcnew ListDictionary(); d->Add( "red", "apple" ); d->Add( "yellow", "banana" ); d->Add( "green", "pear" ); MyCollection^ myROCol = gcnew MyCollection( d, true ); // Tries to add a new item. try { myROCol->Add( "blue", "sky" ); } catch ( NotSupportedException^ e ) { Console::WriteLine( e->ToString() ); } // Displays the keys and values of the MyCollection. Console::WriteLine( "Read-Only Collection:" ); PrintKeysAndValues( myROCol ); } static void PrintKeysAndValues( MyCollection^ myCol ) { for ( int i = 0; i < myCol->Count; i++ ) { Console::WriteLine( "[{0}] : {1}, {2}", i, myCol[i]->Key, myCol[i]->Value ); } } }; int main() { SamplesNameObjectCollectionBase::Main(); } /* This code produces the following output. System.NotSupportedException: Collection is read-only. at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(String name, Object value) at SamplesNameObjectCollectionBase.Main() Read-Only Collection: [0] : red, apple [1] : yellow, banana [2] : green, pear */
.NET Framework
Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0.NET Framework Client Profile
Pris en charge dans : 4, 3.5 SP1Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2
Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.