SecureString.RemoveAt(Int32) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Удаляет символ в указанной позиции индекса из этой безопасной строки.
public:
void RemoveAt(int index);
public void RemoveAt(int index);
[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
public void RemoveAt(int index);
member this.RemoveAt : int -> unit
[<System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions>]
member this.RemoveAt : int -> unit
Public Sub RemoveAt (index As Integer)
Параметры
- index
- Int32
Индекс позиции символа в этой безопасной строке.
- Атрибуты
Исключения
Эта безопасная строка уже удалена.
Эта безопасная строка доступна только для чтения.
index значение меньше нуля или больше или равно длине этой безопасной строки.
Произошла ошибка при защите или отмене защиты значения этой безопасной строки.
Примеры
В следующем примере показано, как AppendCharметоды , , InsertAtRemoveAtSetAtи Clear методы влияют на значение SecureString объекта.
using System;
using System.Security;
class SecureStringExample
{
public static void Main()
{
string msg = "The current 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 current length of the SecureString object: 0
//
// 2) Append 'a' to the value.
// The current length of the SecureString object: 1
//
// 3) Append 'X' to the value.
// The current length of the SecureString object: 2
//
// 4) Append 'c' to the value.
// The current length of the SecureString object: 3
//
// 5) Insert 'd' at the end of the value.
// The current length of the SecureString object: 4
//
// 6) Remove the last character ('d') from the value.
// The current length of the SecureString object: 3
//
// 7) Set the second character of the value to 'b'.
// The current length of the SecureString object: 3
//
// 8) Delete the value of the SecureString object:
// The current length of the SecureString object: 0
Imports System.Security
Module Example
Public Sub Main()
Dim msg As String = "The current length of the SecureString object: {0}" + vbCrLf
Console.WriteLine("1) Instantiate the SecureString object.")
Dim ss As New SecureString()
Console.WriteLine(msg, ss.Length)
Console.WriteLine("2) Append 'a' to the value.")
ss.AppendChar("a"c)
Console.WriteLine(msg, ss.Length)
Console.WriteLine("3) Append 'X' to the value.")
ss.AppendChar("X"c)
Console.WriteLine(msg, ss.Length)
Console.WriteLine("4) Append 'c' to the value.")
ss.AppendChar("c"c)
Console.WriteLine(msg, ss.Length)
Console.WriteLine("5) Insert 'd' at the end of the value.")
ss.InsertAt(ss.Length, "d"c)
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"c)
Console.WriteLine(msg, ss.Length)
Console.WriteLine("8) Delete the value of the SecureString object:")
ss.Clear()
Console.WriteLine(msg, ss.Length)
ss.Dispose()
End Sub
End Module
' The example displays the following output:
' 1) Instantiate the SecureString object.
' The current length of the SecureString object: 0
'
' 2) Append 'a' to the value.
' The current length of the SecureString object: 1
'
' 3) Append 'X' to the value.
' The current length of the SecureString object: 2
'
' 4) Append 'c' to the value.
' The current length of the SecureString object: 3
'
' 5) Insert 'd' at the end of the value.
' The current length of the SecureString object: 4
'
' 6) Remove the last character ('d') from the value.
' The current length of the SecureString object: 3
'
' 7) Set the second character of the value to 'b'.
' The current length of the SecureString object: 3
'
' 8) Delete the value of the SecureString object:
' The current length of the SecureString object: 0
В следующем примере показано, как AppendChar можно использовать методы для RemoveAt сбора символов в пароле.
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:
// ************
Imports System.Security
Class ExampleClass
Public Shared Sub Main()
Dim cki As ConsoleKeyInfo
Dim m As String = vbCrLf & "Enter your password (up to 15 letters, numbers, and underscores)" &
vbCrLf & "Press BACKSPACE to delete the last character entered. " & vbCrLf &
"Press Enter when done, or ESCAPE to quit: "
Dim password As New SecureString()
Dim top, left As Integer
' 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 Then Exit Do
If cki.Key = ConsoleKey.Backspace Then
If password.Length > 0 Then
Console.SetCursorPosition(left + password.Length - 1, top)
Console.Write(" "c)
Console.SetCursorPosition(left + password.Length - 1, top)
password.RemoveAt(password.Length - 1)
End If
Else
If password.Length < 15 AndAlso([Char].IsLetterOrDigit(cki.KeyChar) _
OrElse cki.KeyChar = "_"c) Then
password.AppendChar(cki.KeyChar)
Console.SetCursorPosition(left + password.Length - 1, top)
Console.Write("*"c)
End If
End If
Loop While cki.Key <> ConsoleKey.Enter And password.Length < 15
' Make the password read-only to prevent modification.
password.MakeReadOnly()
' Dispose of the SecureString instance.
password.Dispose()
End Sub
End Class
' The 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:
' ************
Комментарии
Индекс равен нулю; первый символ в этом экземпляре находится в нулевой позиции индекса.
Если реализация использует механизм защиты, например шифрование, значение этой безопасной строки, если таковой имеется, незащищен; Символ в указанной позиции индекса удаляется; затем новое значение будет повторно защищено.