다음을 통해 공유


SecureString.InsertAt(Int32, Char) 메서드

정의

이 보안 문자열의 지정한 인덱스 위치에 문자를 삽입합니다.

public:
 void InsertAt(int index, char c);
public void InsertAt (int index, char c);
[System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions]
public void InsertAt (int index, char c);
member this.InsertAt : int * char -> unit
[<System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptions>]
member this.InsertAt : int * char -> unit
Public Sub InsertAt (index As Integer, c As Char)

매개 변수

index
Int32

c 매개 변수가 삽입될 인덱스 위치입니다.

c
Char

삽입할 문자입니다.

특성

예외

이 보안 문자열이 이미 삭제된 경우

이 보안 문자열이 읽기 전용인 경우

index가 0보다 작거나 이 보안 문자열의 길이보다 큰 경우

또는 이 작업을 수행하면 이 보안 문자열의 길이가 65536문자보다 커집니다.

이 보안 문자열 값을 보호하거나 보호 해제하는 동안 오류가 발생했습니다.

예제

다음 예제에서는 AppendChar ,, InsertAt RemoveAt , SetAtClear 메서드가 개체의 값에 영향을 주는 SecureString 방법을 보여 줍니다.

using namespace System;
using namespace System::Security;

void main()
{
    String^ msg = L"   The current length of the SecureString object: {0}\n";
    SecureString ^ ss = gcnew SecureString;

    Console::WriteLine(L"1) Instantiate the SecureString object:");
    Console::WriteLine(msg, ss->Length );

    Console::WriteLine(L"2) Append 'a' to the value:");
    ss->AppendChar('a');
    Console::WriteLine(msg, ss->Length );

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

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

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

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

    Console::WriteLine(L"7) Set the second character ('X') of the value to 'b':" );
    ss->SetAt(1, 'b');
    Console::WriteLine(msg, ss->Length );

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

    delete ss;
}

/*
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
*/
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
Imports System.Security

Module Example
    Public Sub Main()
       Dim msg As String = "The curent 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 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

설명

인덱스는 0부터 시작 합니다. 이 보안 문자열의 첫 번째 문자는 인덱스 위치 0에 있습니다.

구현에서 암호화와 같은 보호 메커니즘을 사용 하는 경우 보안 문자열의 값 (있는 경우)은 보호 되지 않습니다. c 는 지정 된 인덱스 위치에 삽입 됩니다. 그러면 새 값이 다시 보호 됩니다. InsertAt메서드는 AppendChar index 의 매개 변수가 InsertAt 이 인스턴스의 길이로 설정 된 경우 보안 문자열의 끝에 문자를 삽입 하는 메서드와 동일한 결과를 생성 합니다.

적용 대상