정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Collection<T>.InsertItem 메서드

2013-12-13

Collection<T>의 지정된 인덱스에 요소를 삽입합니다.

Namespace:  System.Collections.ObjectModel
어셈블리:  mscorlib(mscorlib.dll)

protected virtual void InsertItem(
	int index,
	T item
)

매개 변수

index
형식: System.Int32
item를 삽입할 인덱스(0부터 시작)입니다.
item
형식: T
삽입할 개체입니다. 참조 형식에 대한 값이 null일 수 있습니다.

예외조건
ArgumentOutOfRangeException

index가 0보다 작은 경우

-또는-

indexCount보다 큰 경우

Collection<T>null을 참조 형식에 대해 유효한 값으로 받아들이며 중복 요소를 허용합니다.

indexCount와 같으면 itemCollection<T>의 끝에 추가됩니다.

이 메서드는 O(n) 연산이며, 여기서 nCount입니다.

다음 코드 예제에서는 Collection<T> 제네릭 클래스의 생성된 형식에서 컬렉션 클래스를 파생시키는 방법을 보여 주고, 보호된 InsertItem, RemoveItem, ClearItemsSetItem 메서드를 재정의하여 Add, Insert, RemoveClear 메서드에 대한 사용자 지정 동작과 Item 속성을 설정하는 사용자 지정 동작을 제공하는 방법을 보여 줍니다.

이 예제에서 제공하는 사용자 지정 동작은 보호된 각 메서드의 끝 부분에서 발생하는 Changed 알림 이벤트입니다. Dinosaurs 클래스는 Collection<string>(Visual Basic에서는 Collection(Of String))을 상속하고 DinosaursChangedEventArgs 클래스를 이벤트 정보로 사용하는 Changed 이벤트와 변경 종류를 식별하는 열거형을 정의합니다.

이 코드 예제에서는 Collection<T>의 몇몇 속성과 메서드를 호출하여 사용자 지정 이벤트를 보여 줍니다.


using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows.Controls;

public class Dinosaurs : Collection<string>
{
    public event EventHandler<DinosaursChangedEventArgs> Changed;


    protected override void InsertItem(int index, string newItem)
    {
        base.InsertItem(index, newItem);

        EventHandler<DinosaursChangedEventArgs> temp = Changed;
        if (temp != null)
        {
            temp(this, new DinosaursChangedEventArgs(
                ChangeType.Added, newItem, null));
        }
    }

    protected override void SetItem(int index, string newItem)
    {
        string replaced = Items[index];
        base.SetItem(index, newItem);

        EventHandler<DinosaursChangedEventArgs> temp = Changed;
        if (temp != null)
        {
            temp(this, new DinosaursChangedEventArgs(
                ChangeType.Replaced, replaced, newItem));
        }
    }

    protected override void RemoveItem(int index)
    {
        string removedItem = Items[index];
        base.RemoveItem(index);

        EventHandler<DinosaursChangedEventArgs> temp = Changed;
        if (temp != null)
        {
            temp(this, new DinosaursChangedEventArgs(
                ChangeType.Removed, removedItem, null));
        }
    }

    protected override void ClearItems()
    {
        base.ClearItems();

        EventHandler<DinosaursChangedEventArgs> temp = Changed;
        if (temp != null)
        {
            temp(this, new DinosaursChangedEventArgs(
                ChangeType.Cleared, null, null));
        }
    }
}

// Event argument for the Changed event.
//
public class DinosaursChangedEventArgs : EventArgs
{
    public readonly string ChangedItem;
    public readonly ChangeType ChangeType;
    public readonly string ReplacedWith;

    public DinosaursChangedEventArgs(ChangeType change, string item,
        string replacement)
    {
        ChangeType = change;
        ChangedItem = item;
        ReplacedWith = replacement;
    }
}

public enum ChangeType
{
    Added,
    Removed,
    Replaced,
    Cleared
};

public class Example
{

    private static TextBlock _textblock;


    public static void Demo(TextBlock outputBlock)
    {

        Example._textblock = outputBlock;

        Dinosaurs dinosaurs = new Dinosaurs();

        dinosaurs.Changed += ChangedHandler;

        dinosaurs.Add("Psitticosaurus");
        dinosaurs.Add("Caudipteryx");
        dinosaurs.Add("Compsognathus");
        dinosaurs.Add("Muttaburrasaurus");

        Display(dinosaurs);

        outputBlock.Text += String.Format("\nIndexOf(\"Muttaburrasaurus\"): {0}\n",
            dinosaurs.IndexOf("Muttaburrasaurus"));

        outputBlock.Text += String.Format("\nContains(\"Caudipteryx\"): {0}\n",
            dinosaurs.Contains("Caudipteryx"));

        outputBlock.Text += String.Format("\nInsert(2, \"Nanotyrannus\")\n");
        dinosaurs.Insert(2, "Nanotyrannus");

        outputBlock.Text += String.Format("\ndinosaurs[2]: {0}\n", dinosaurs[2]);

        outputBlock.Text += "\ndinosaurs[2] = \"Microraptor\"" + "\n";
        dinosaurs[2] = "Microraptor";

        outputBlock.Text += "\nRemove(\"Microraptor\")\n";
        dinosaurs.Remove("Microraptor");

        outputBlock.Text += "\nRemoveAt(0)\n";
        dinosaurs.RemoveAt(0);

        Display(dinosaurs);
    }

    private static void Display(Collection<string> cs)
    {
        _textblock.Text += "\n";
        foreach (string item in cs)
        {
            _textblock.Text += item + "\n";
        }
    }

    private static void ChangedHandler(object source,
        DinosaursChangedEventArgs e)
    {

        if (e.ChangeType == ChangeType.Replaced)
        {
            _textblock.Text += String.Format("{0} was replaced with {1}\n", e.ChangedItem,
                e.ReplacedWith);
        }
        else if (e.ChangeType == ChangeType.Cleared)
        {
            _textblock.Text += "The dinosaur list was cleared." + "\n";
        }
        else
        {
            _textblock.Text += String.Format("{0} was {1}.\n", e.ChangedItem, e.ChangeType);
        }
    }
}


/* This code example produces the following output:

Psitticosaurus was Added.
Caudipteryx was Added.
Compsognathus was Added.
Muttaburrasaurus was Added.

Psitticosaurus
Caudipteryx
Compsognathus
Muttaburrasaurus

IndexOf("Muttaburrasaurus"): 3

Contains("Caudipteryx"): True

Insert(2, "Nanotyrannus")
Nanotyrannus was Added.

dinosaurs[2]: Nanotyrannus

dinosaurs[2] = "Microraptor"
Nanotyrannus was replaced with Microraptor

Remove("Microraptor")
Microraptor was Removed.

RemoveAt(0)
Psitticosaurus was Removed.

Caudipteryx
Compsognathus
Muttaburrasaurus
 */


Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

표시: