Click to Rate and Give Feedback
MSDN
MSDN Library
.NET Development
.NET Framework 3.5
SecureString Class
 InsertAt Method
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
.NET Framework Class Library
SecureString..::.InsertAt Method

Updated: November 2007

Inserts a character in this secure string at the specified index position.

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

Visual Basic (Declaration)
Public Sub InsertAt ( _
    index As Integer, _
    c As Char _
)
Visual Basic (Usage)
Dim instance As SecureString
Dim index As Integer
Dim c As Char

instance.InsertAt(index, c)
C#
public void InsertAt(
    int index,
    char c
)
Visual C++
public:
void InsertAt(
    int index, 
    wchar_t c
)
J#
public void InsertAt(
    int index,
    char c
)
JScript
public function InsertAt(
    index : int, 
    c : char
)

Parameters

index
Type: System..::.Int32

The index position where parameter c is inserted.

c
Type: System..::.Char

The character to insert.

ExceptionCondition
ObjectDisposedException

This secure string has already been disposed.

InvalidOperationException

This secure string is read-only.

ArgumentOutOfRangeException

index is less than zero, or greater than the length of this secure string.

-or-

Performing this operation would make the length of this secure string greater than 65536 characters.

CryptographicException

An error occurred while encrypting or decrypting the value of this secure string.

The index is zero-based and the first character in this secure string is at index position zero.

The value of the secure string, if any, is decrypted; c is inserted at the specified location; then the new value is encrypted. The InsertAt method yields the same results as the AppendChar method, which inserts a character at the end of a secure string, if the index parameter of InsertAt is set to the length of this instance.

The following code example demonstrates how the AppendChar, InsertAt, RemoveAt, SetAt, and Clear methods affect the value of a SecureString object.

Visual Basic
' This example demonstrates the AppendChar, 
' InsertAt, RemoveAt, SetAt, and Clear methods.
Imports System
Imports System.Security

Class Sample
   Public Shared Sub Main()
      Dim msg1 As String = "   SecureString = {0}" & vbCrLf & "   Length = {1}" & vbCrLf
      Dim msg2 As String = "This example demonstrates the effect of the AppendChar, InsertAt," & vbCrLf & _
                           "RemoveAt, SetAt, and Clear methods on the value of a SecureString" & vbCrLf & _
                           "object. This example simulates the value of the object because the" & vbCrLf & _
                           "actual value is encrypted." & vbCrLf
      Dim ss As New SecureString()
' 
'  This sample modifies the contents of a SecureString, ss, in
'  several steps. After each step, the length and simulated value of ss 
'  are displayed. The actual value of ss is encrypted.
'
      Console.WriteLine(msg2)

      Console.WriteLine("1) The initial value of the SecureString object:")
      Console.WriteLine(msg1, """""", ss.Length)

      Console.WriteLine("2) AppendChar: Append 'a' to the value:")
      ss.AppendChar("a"c)
      Console.WriteLine(msg1, """a""", ss.Length)

      Console.WriteLine("3) AppendChar: Append 'X' to the value:")
      ss.AppendChar("X"c)
      Console.WriteLine(msg1, """aX""", ss.Length)

      Console.WriteLine("4) AppendChar: Append 'c' to the value:")
      ss.AppendChar("c"c)
      Console.WriteLine(msg1, """aXc""", ss.Length)

      Console.WriteLine(("5) InsertAt: Insert 'd' at the end of the value (equivalent" & vbCrLf & "     to AppendChar):"))
      ss.InsertAt(ss.Length, "d"c)
      Console.WriteLine(msg1, """aXcd""", ss.Length)

      Console.WriteLine("6) RemoveAt: Remove the last character ('d') from the value:")
      ss.RemoveAt(3)
      Console.WriteLine(msg1, """aXc""", ss.Length)

      Console.WriteLine("7) SetAt: Set the second character ('X') of the value to 'b':")
      ss.SetAt(1, "b"c)
      Console.WriteLine(msg1, """abc""", ss.Length)

      Console.WriteLine("8) Clear: Delete the value of the SecureString object:")
      ss.Clear()
      Console.WriteLine(msg1, """""", ss.Length)
   End Sub 'Main
End Class 'Sample
'
'This code example produces the following results:
'
'This example demonstrates the effect of the AppendChar, InsertAt,
'RemoveAt, SetAt, and Clear methods on the value of a SecureString
'object. This example simulates the value of the object because the
'actual value is encrypted.
'
'1) The initial value of the SecureString object:
'   SecureString = ""
'   Length = 0
'
'2) AppendChar: Append 'a' to the value:
'   SecureString = "a"
'   Length = 1
'
'3) AppendChar: Append 'X' to the value:
'   SecureString = "aX"
'   Length = 2
'
'4) AppendChar: Append 'c' to the value:
'   SecureString = "aXc"
'   Length = 3
'
'5) InsertAt: Insert 'd' at the end of the value (equivalent
'     to AppendChar):
'   SecureString = "aXcd"
'   Length = 4
'
'6) RemoveAt: Remove the last character ('d') from the value:
'   SecureString = "aXc"
'   Length = 3
'
'7) SetAt: Set the second character ('X') of the value to 'b':
'   SecureString = "abc"
'   Length = 3
'
'8) Clear: Delete the value of the SecureString object:
'   SecureString = ""
'   Length = 0
'

C#
// This example demonstrates the AppendChar, 
// InsertAt, RemoveAt, SetAt, and Clear methods.

using System;
using System.Security;

class Sample 
{
    public static void Main() 
    {
    string msg1 = "   SecureString = {0}\n   Length = {1}\n";
    string msg2 = "This example demonstrates the effect of the AppendChar, InsertAt,\n" +
                  "RemoveAt, SetAt, and Clear methods on the value of a SecureString\n" +
                  "object. This example simulates the value of the object because the\n" +
                  "actual value is encrypted.\n";
    SecureString ss = new SecureString();
/* 
  This sample modifies the contents of a SecureString, ss, in
  several steps. After each step, the length and simulated value of ss 
  are displayed. The actual value of ss is encrypted.
*/
    Console.WriteLine(msg2);

    Console.WriteLine("1) The initial value of the SecureString object:");
    Console.WriteLine(msg1, "\"\"", ss.Length);

    Console.WriteLine("2) AppendChar: Append 'a' to the value:");
    ss.AppendChar('a');
    Console.WriteLine(msg1, "\"a\"", ss.Length);

    Console.WriteLine("3) AppendChar: Append 'X' to the value:");
    ss.AppendChar('X');
    Console.WriteLine(msg1, "\"aX\"", ss.Length);

    Console.WriteLine("4) AppendChar: Append 'c' to the value:");
    ss.AppendChar('c');
    Console.WriteLine(msg1, "\"aXc\"", ss.Length);

    Console.WriteLine("5) InsertAt: Insert 'd' at the end of the value (equivalent\n" +
                      "     to AppendChar):");
    ss.InsertAt(ss.Length, 'd');
    Console.WriteLine(msg1, "\"aXcd\"", ss.Length);

    Console.WriteLine("6) RemoveAt: Remove the last character ('d') from the value:");
    ss.RemoveAt(3);
    Console.WriteLine(msg1, "\"aXc\"", ss.Length);

    Console.WriteLine("7) SetAt: Set the second character ('X') of the value to 'b':");
    ss.SetAt(1, 'b');
    Console.WriteLine(msg1, "\"abc\"", ss.Length);

    Console.WriteLine("8) Clear: Delete the value of the SecureString object:");
    ss.Clear();
    Console.WriteLine(msg1, "\"\"", ss.Length);
    }
}
/*
This code example produces the following results:

This example demonstrates the effect of the AppendChar, InsertAt,
RemoveAt, SetAt, and Clear methods on the value of a SecureString
object. This example simulates the value of the object because the
actual value is encrypted.

1) The initial value of the SecureString object:
   SecureString = ""
   Length = 0

2) AppendChar: Append 'a' to the value:
   SecureString = "a"
   Length = 1

3) AppendChar: Append 'X' to the value:
   SecureString = "aX"
   Length = 2

4) AppendChar: Append 'c' to the value:
   SecureString = "aXc"
   Length = 3

5) InsertAt: Insert 'd' at the end of the value (equivalent
     to AppendChar):
   SecureString = "aXcd"
   Length = 4

6) RemoveAt: Remove the last character ('d') from the value:
   SecureString = "aXc"
   Length = 3

7) SetAt: Set the second character ('X') of the value to 'b':
   SecureString = "abc"
   Length = 3

8) Clear: Delete the value of the SecureString object:
   SecureString = ""
   Length = 0
*/

Visual C++
// This example demonstrates the AppendChar,
// InsertAt, RemoveAt, SetAt, and Clear methods.

using namespace System;
using namespace System::Security;

int main()
{
    String^ msg1 = L"   SecureString = {0}\n   Length = {1}\n";
    String^ msg2 = L"This example demonstrates the effect of the AppendChar, InsertAt,\n"
    L"RemoveAt, SetAt, and Clear methods on the value of a SecureString\n"
    L"object. This example simulates the value of the object because the\n"
    L"actual value is encrypted.\n";
    SecureString ^ ss = gcnew SecureString;

    // This sample modifies the contents of a SecureString, ss, in
    // several steps. After each step, the length and simulated value of ss
    // are displayed. The actual value of ss is encrypted.
    Console::WriteLine( msg2 );
    Console::WriteLine( L"1) The initial value of the SecureString object:" );
    Console::WriteLine( msg1, L"\"\"", ss->Length );
    Console::WriteLine( L"2) AppendChar: Append 'a' to the value:" );

    ss->AppendChar( 'a' );
    Console::WriteLine( msg1, L"\"a\"", ss->Length );
    Console::WriteLine( L"3) AppendChar: Append 'X' to the value:" );

    ss->AppendChar( 'X' );
    Console::WriteLine( msg1, L"\"aX\"", ss->Length );
    Console::WriteLine( L"4) AppendChar: Append 'c' to the value:" );

    ss->AppendChar( 'c' );
    Console::WriteLine( msg1, L"\"aXc\"", ss->Length );
    Console::WriteLine( L"5) InsertAt: Insert 'd' at the end of the value (equivalent\n"
                        L"     to AppendChar):" );

    ss->InsertAt( ss->Length, 'd' );
    Console::WriteLine( msg1, L"\"aXcd\"", ss->Length );
    Console::WriteLine( L"6) RemoveAt: Remove the last character ('d') from the value:" );

    ss->RemoveAt( 3 );
    Console::WriteLine( msg1, L"\"aXc\"", ss->Length );
    Console::WriteLine( L"7) SetAt: Set the second character ('X') of the value to 'b':" );

    ss->SetAt( 1, 'b' );
    Console::WriteLine( msg1, L"\"abc\"", ss->Length );
    Console::WriteLine( L"8) Clear: Delete the value of the SecureString object:" );

    ss->Clear();
    Console::WriteLine( msg1, L"\"\"", ss->Length );

    return 0;
}

/*
This code example produces the following results:

This example demonstrates the effect of the AppendChar, InsertAt,
RemoveAt, SetAt, and Clear methods on the value of a SecureString
object. This example simulates the value of the object because the
actual value is encrypted.

1) The initial value of the SecureString object:
   SecureString = ""
   Length = 0

2) AppendChar: Append 'a' to the value:
   SecureString = "a"
   Length = 1

3) AppendChar: Append 'X' to the value:
   SecureString = "aX"
   Length = 2

4) AppendChar: Append 'c' to the value:
   SecureString = "aXc"
   Length = 3

5) InsertAt: Insert 'd' at the end of the value (equivalent
     to AppendChar):
   SecureString = "aXcd"
   Length = 4

6) RemoveAt: Remove the last character ('d') from the value:
   SecureString = "aXc"
   Length = 3

7) SetAt: Set the second character ('X') of the value to 'b':
   SecureString = "abc"
   Length = 3

8) Clear: Delete the value of the SecureString object:
   SecureString = ""
   Length = 0
*/

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker