NameObjectCollectionBase.IsReadOnly Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Wert ab, der angibt, ob die NameObjectCollectionBase-Instanz schreibgeschützt ist, oder legt diesen fest.
protected:
property bool IsReadOnly { bool get(); void set(bool value); };
protected bool IsReadOnly { get; set; }
member this.IsReadOnly : bool with get, set
Protected Property IsReadOnly As Boolean
Eigenschaftswert
true
, wenn die NameObjectCollectionBase-Instanz schreibgeschützt ist, andernfalls false
.
Beispiele
Im folgenden Codebeispiel wird eine schreibgeschützte Auflistung erstellt.
#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
*/
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
*/
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
' Adds an entry to the collection.
Public Sub Add(key As [String], value As [Object])
Me.BaseAdd(key, value)
End Sub
End Class
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
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
End Class
'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
Hinweise
Eine schreibgeschützte Auflistung gestattet nach dem Erstellen der Auflistung weder das Hinzufügen noch das Ändern oder Entfernen von Elementen.
Eine auflistung, die schreibgeschützt ist, ist einfach eine Auflistung mit einem Wrapper, der das Ändern der Auflistung verhindert. Wenn Änderungen an der zugrunde liegenden Auflistung vorgenommen werden, spiegelt die schreibgeschützte Auflistung diese Änderungen wider.
Das Abrufen des Werts dieser Eigenschaft ist ein O(1)-Vorgang.