ArrayList::IsFixedSize Property

 

Gets a value indicating whether the ArrayList has a fixed size.

Namespace:   System.Collections
Assembly:  mscorlib (in mscorlib.dll)

public:
property bool IsFixedSize {
	virtual bool get();
}

Property Value

Type: System::Boolean

true if the ArrayList has a fixed size; otherwise, false. The default is false.

A collection with a fixed size does not allow the addition or removal of elements after the collection is created, but it allows the modification of existing elements.

A collection with a fixed size is simply a collection with a wrapper that prevents adding and removing elements; therefore, if changes are made to the underlying collection, including the addition or removal of elements, the fixed-size collection reflects those changes.

Retrieving the value of this property is an O(1) operation.

The following code example shows how to create a fixed-size wrapper around an ArrayList.

using namespace System;
using namespace System::Collections;
void PrintValues( IEnumerable^ myList, char mySeparator );
int main()
{

   // Creates and initializes a new ArrayList.
   ArrayList^ myAL = gcnew ArrayList;
   myAL->Add( "The" );
   myAL->Add( "quick" );
   myAL->Add( "brown" );
   myAL->Add( "fox" );
   myAL->Add( "jumped" );
   myAL->Add( "over" );
   myAL->Add( "the" );
   myAL->Add( "lazy" );
   myAL->Add( "dog" );

   // Create a fixed-size wrapper around the ArrayList.
   ArrayList^ myFixedSizeAL = ArrayList::FixedSize( myAL );

   // Display whether the ArrayLists have a fixed size or not.
   Console::WriteLine( "myAL {0}.", myAL->IsFixedSize ? (String^)"has a fixed size" : "does not have a fixed size" );
   Console::WriteLine( "myFixedSizeAL {0}.", myFixedSizeAL->IsFixedSize ? (String^)"has a fixed size" : "does not have a fixed size" );
   Console::WriteLine();

   // Display both ArrayLists.
   Console::WriteLine( "Initially," );
   Console::Write( "Standard  :" );
   PrintValues( myAL, ' ' );
   Console::Write( "Fixed size:" );
   PrintValues( myFixedSizeAL, ' ' );

   // Sort is allowed in the fixed-size ArrayList.
   myFixedSizeAL->Sort();

   // Display both ArrayLists.
   Console::WriteLine( "After Sort," );
   Console::Write( "Standard  :" );
   PrintValues( myAL, ' ' );
   Console::Write( "Fixed size:" );
   PrintValues( myFixedSizeAL, ' ' );

   // Reverse is allowed in the fixed-size ArrayList.
   myFixedSizeAL->Reverse();

   // Display both ArrayLists.
   Console::WriteLine( "After Reverse," );
   Console::Write( "Standard  :" );
   PrintValues( myAL, ' ' );
   Console::Write( "Fixed size:" );
   PrintValues( myFixedSizeAL, ' ' );

   // Add an element to the standard ArrayList.
   myAL->Add( "AddMe" );

   // Display both ArrayLists.
   Console::WriteLine( "After adding to the standard ArrayList," );
   Console::Write( "Standard  :" );
   PrintValues( myAL, ' ' );
   Console::Write( "Fixed size:" );
   PrintValues( myFixedSizeAL, ' ' );
   Console::WriteLine();

   // Adding or inserting elements to the fixed-size ArrayList throws an exception.
   try
   {
      myFixedSizeAL->Add( "AddMe2" );
   }
   catch ( Exception^ myException ) 
   {
      Console::WriteLine( "Exception: {0}", myException );
   }

   try
   {
      myFixedSizeAL->Insert( 3, "InsertMe" );
   }
   catch ( Exception^ myException ) 
   {
      Console::WriteLine( "Exception: {0}", myException );
   }

}

void PrintValues( IEnumerable^ myList, char mySeparator )
{
   IEnumerator^ myEnum = myList->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Object^ obj = safe_cast<Object^>(myEnum->Current);
      Console::Write( "{0}{1}", mySeparator, obj );
   }

   Console::WriteLine();
}

/*
 This code produces the following output.

 myAL does not have a fixed size.
 myFixedSizeAL has a fixed size.

 Initially,
 Standard  : The quick brown fox jumped over the lazy dog
 Fixed size: The quick brown fox jumped over the lazy dog
 After Sort,
 Standard  : brown dog fox jumped lazy over quick the The
 Fixed size: brown dog fox jumped lazy over quick the The
 After Reverse,
 Standard  : The the quick over lazy jumped fox dog brown
 Fixed size: The the quick over lazy jumped fox dog brown
 After adding to the standard ArrayList,
 Standard  : The the quick over lazy jumped fox dog brown AddMe
 Fixed size: The the quick over lazy jumped fox dog brown AddMe

 Exception: System.NotSupportedException: Collection was of a fixed size.
    at System.Collections.FixedSizeArrayList.Add(Object obj)
    at SamplesArrayList.Main()
 Exception: System.NotSupportedException: Collection was of a fixed size.
    at System.Collections.FixedSizeArrayList.Insert(Int32 index, Object obj)
    at SamplesArrayList.Main()

 */

Universal Windows Platform
Available since 10
.NET Framework
Available since 1.1
Return to top
Show: