NameObjectCollectionBase.IsReadOnly プロパティ
NameObjectCollectionBase インスタンスが読み取り専用かどうかを示す値を取得または設定します。
Protected Property IsReadOnly As Boolean
[C#]
protected bool IsReadOnly {get; set;}
[C++]
protected: __property bool get_IsReadOnly();protected: __property void set_IsReadOnly(bool);
[JScript]
protected function get IsReadOnly() : Boolean;protected function set IsReadOnly(Boolean);
プロパティ値
NameObjectCollectionBase インスタンスが読み取り専用の場合は true 。それ以外の場合は false 。
解説
読み取り専用のコレクションでは、コレクション作成後に要素の追加、削除、または変更はできません。
読み取り専用のコレクションは、コレクションの変更を防ぐラッパーがコレクションに組み込まれているに過ぎません。したがって、基になっているコレクションで変更が加えられた場合、読み取り専用のコレクションでもその内容が反映されます。
使用例
[Visual Basic, C#, C++] 読み取り専用のコレクションを作成する方法については、次のコード例を参照してください。
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
[C#]
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
*/
[C++]
#using <mscorlib.dll>
#using <system.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Collections::Specialized;
public __gc class MyCollection : public NameObjectCollectionBase
{
private:
DictionaryEntry _de;
public:
// Gets a key-and-value pair (DictionaryEntry) using an index.
__property DictionaryEntry get_Item( 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)
{
IEnumerator* myEnum = d->GetEnumerator();
while (myEnum->MoveNext())
{
DictionaryEntry* de = __try_cast<DictionaryEntry*>(myEnum->Current);
this->BaseAdd(__try_cast<String*>(de->Key), de->Value);
}
this->IsReadOnly = bReadOnly;
}
// Adds an entry to the collection.
void Add(String* key, Object* value)
{
this->BaseAdd(key, value);
}
};
void PrintKeysAndValues(MyCollection* myCol) {
for (int i = 0; i < myCol->Count; i++) {
Console::WriteLine(S"[{0}] : {1}, {2}", __box(i), myCol->Item[i].Key, myCol->Item[i].Value);
}
}
int main()
{
// Creates and initializes a new MyCollection that is read-only.
IDictionary* d = new ListDictionary();
d->Add(S"red", S"apple");
d->Add(S"yellow", S"banana");
d->Add(S"green", S"pear");
MyCollection* myROCol = new MyCollection(d, true);
// Tries to add a new item.
try {
myROCol->Add(S"blue", S"sky");
} catch (NotSupportedException* e) {
Console::WriteLine(e);
}
// Displays the keys and values of the MyCollection.
Console::WriteLine(S"Read-Only Collection:");
PrintKeysAndValues(myROCol);
}
/*
This code produces the following output.
System.NotSupportedException: Collection is read-only.
at System.Collections.Specialized.NameObjectCollectionBase.BaseAdd(String name, Object value)
at main()
Read-Only Collection:
[0] : red, apple
[1] : yellow, banana
[2] : green, pear
*/
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
参照
NameObjectCollectionBase クラス | NameObjectCollectionBase メンバ | System.Collections.Specialized 名前空間