RemoveAt Method
Collapse the table of content
Expand the table of content

SecureString.RemoveAt Method (Int32)

 

Removes the character at the specified index position from this secure string.

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

[HandleProcessCorruptedStateExceptionsAttribute]
public void RemoveAt(
	int index
)

Parameters

index
Type: System.Int32

The index position of a character in this secure string.

Exception Condition
ObjectDisposedException

This secure string has already been disposed.

InvalidOperationException

This secure string is read-only.

ArgumentOutOfRangeException

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

CryptographicException

An error occurred while protecting or unprotecting the value of this secure string.

The index is zero-based; the first character in this instance is at index position zero.

If the implementation uses a protection mechanism, such as encryption, the value of this secure string, if any, is unprotected; the character at the specified index position is removed; then the new value is re-protected.

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

using System;
using System.Security;

class Example
{
    public static void Main() 
    {
       string msg = "The curent length of the SecureString object: {0}\n";
       Console.WriteLine("1) Instantiate the SecureString object.");
       SecureString ss = new SecureString();
       Console.WriteLine(msg, ss.Length);

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

       Console.WriteLine("3) Append 'X' to the value.");
       ss.AppendChar('X');
       Console.WriteLine(msg, ss.Length);

       Console.WriteLine("4) Append 'c' to the value.");
       ss.AppendChar('c');
       Console.WriteLine(msg, ss.Length);

       Console.WriteLine("5) Insert 'd' at the end of the value.");
       ss.InsertAt(ss.Length, 'd');
       Console.WriteLine(msg, ss.Length);

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

       Console.WriteLine("7) Set the second character of the value to 'b'.");
       ss.SetAt(1, 'b');
       Console.WriteLine(msg, ss.Length);

       Console.WriteLine("8) Delete the value of the SecureString object:");
       ss.Clear();
       Console.WriteLine(msg, ss.Length);

       ss.Dispose();
    }
}
// The example displays the following output:
//       1) Instantiate the SecureString object.
//       The curent length of the SecureString object: 0
//
//       2) Append 'a' to the value.
//       The curent length of the SecureString object: 1
//
//       3) Append 'X' to the value.
//       The curent length of the SecureString object: 2
//
//       4) Append 'c' to the value.
//       The curent length of the SecureString object: 3
//
//       5) Insert 'd' at the end of the value.
//       The curent length of the SecureString object: 4
//
//       6) Remove the last character ('d') from the value.
//       The curent length of the SecureString object: 3
//
//       7) Set the second character of the value to 'b'.
//       The curent length of the SecureString object: 3
//
//       8) Delete the value of the SecureString object:
//       The curent length of the SecureString object: 0

The following example demonstrates how the AppendChar and RemoveAt methods can be used to collect the characters in a password.

using System;
using System.Security;

class Example
{
   public static void Main()
   {
      ConsoleKeyInfo cki;
      String m = "\nEnter your password (up to 15 letters, numbers, and underscores)\n" +
                 "Press BACKSPACE to delete the last character entered. " +
                 "\nPress Enter when done, or ESCAPE to quit:";
      SecureString password = new SecureString();
      int top, left;

      // The Console.TreatControlCAsInput property prevents CTRL+C from
      // ending this example.
      Console.TreatControlCAsInput = true;

      Console.Clear();
      Console.WriteLine(m);

      top  = Console.CursorTop;
      left = Console.CursorLeft;

      // Read user input from the console. Store up to 15 letter, digit, or underscore
      // characters in a SecureString object, or delete a character if the user enters
      // a backspace. Display an asterisk (*) on the console to represent each character
      // that is stored.

      do {
         cki = Console.ReadKey(true);
         if (cki.Key == ConsoleKey.Escape) break;

         if (cki.Key == ConsoleKey.Backspace) {
            if (password.Length > 0) {
               Console.SetCursorPosition(left + password.Length - 1, top);
               Console.Write(' ');
               Console.SetCursorPosition(left + password.Length - 1, top);
               password.RemoveAt(password.Length-1);
            }
         }
         else {
            if ((password.Length < 15) &&
                 (Char.IsLetterOrDigit(cki.KeyChar) || cki.KeyChar == '_')) {
               password.AppendChar(cki.KeyChar);
               Console.SetCursorPosition(left+password.Length-1, top);
               Console.Write('*');
            }
         }
      } while (cki.Key != ConsoleKey.Enter & password.Length < 15);

      // Make the password read-only to prevent modification.
      password.MakeReadOnly();
      // Dispose of the SecureString instance.
      password.Dispose();
   }
}
// This example displays output like the following:
//    Enter your password (up to 15 letters, numbers, and underscores)
//    Press BACKSPACE to delete the last character entered.
//    Press Enter when done, or ESCAPE to quit:
//    ************

Universal Windows Platform
Available since 10
.NET Framework
Available since 2.0
Return to top
Show:
© 2016 Microsoft