SecureString.RemoveAt Method
Removes the character at the specified index position from this secure string.
Namespace: System.Security
Assembly: mscorlib (in mscorlib.dll)
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 encrypting or decrypting the value of this secure string. |
The following code example demonstrates how the AppendChar, InsertAt, RemoveAt, SetAt, and Clear methods affect the value of a SecureString object.
// 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 */
The following code example demonstrates how the AppendChar and RemoveAt methods can be used to collect the characters in a password.
// This example demonstrates using the AppendChar and RemoveAt // methods to collect a password. using System; using System.Security; class Sample { public static void Main() { ConsoleKeyInfo cki; String m1 = "(This example simulates entering a password. " + "Do not enter an actual password.)\n"; String m2 = "Enter your password (up to 15 letters, numbers, and underscores)\n" + "Press BACKSPACE to delete the last character entered. \nPress ESCAPE to quit:"; SecureString password = new SecureString(); int top, left; // The Console.TreatControlCAsInput property prevents this example from // ending if you press CTL+C, however all other operating system keys and // shortcuts, such as ALT+TAB or the Windows Logo key, are still in effect. // Each input character is assumed to occupy one screen column. Console.TreatControlCAsInput = true; Console.Clear(); Console.WriteLine(m1); Console.WriteLine(m2); 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. while (true) { 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('*'); } } } // Make the password read-only to prevent it from being modified after it has // been collected. password.MakeReadOnly(); } } /* This example produces results similar to the following text: (This example simulates entering a password. Do not enter an actual password.) Enter your password (up to 15 letters, numbers, and underscores) Press BACKSPACE to delete the last character entered. Press ESCAPE to quit: *************** */
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.