IEnumerator

Top / Coding / .NET / 標準ライブラリ / IEnumerator
 

ページ構成
−Top
  • −Coding
    • −.NET
      • ・.NETStandard
      • +3rdPartyライブラリ
      • ・AOP
      • +ASP.NET
      • ・CD.DVDにデータを書き込む
      • ・DPAPI
      • ・DryadLINQ
      • ・EXEとDLLを1つにまとめる
      • ・GPGの使用
      • +IEの操作
      • ・IMEの日本語確定によるEnterの判定
      • ・MACアドレスの取得
      • ・MSTest
      • ・MeCabの利用
      • ・MetroStyleApps
      • ・Microsoft.VisualBasic
      • ・NuGetパッケージの作成
      • ・Tipsまとめサイト
      • ・UACへの対応
      • ・VS2012単体テスト
      • ・VS以外のIDE
      • +Verごとの違い
      • ・VisualStudioビルドイベント
      • ・VisualStudio拡張機能
      • +WPF
      • ・WebAutomation
      • ・WinFormsメモ
      • +WinRT
      • ・csc.exeの使い方
      • ・msbuild
      • ・yield_return
      • ・アセンブリの難読化
      • ・ウィンドウ位置の正しい復元
      • ・クリップボードの監視
      • ・グローバルフック
      • ・コマンドラインツールの作成
      • ・コンポーネントの作成
      • ・サービスの開発
      • ・デバッグに関するTips
      • ・フォント幅の取得
      • ・マルチスレッド処理の勘所
      • ・モックフレームワーク
      • ・モニタの電源制御
      • ・ユーザー独自の設定ファイル作成
      • +開発環境
      • ・技術資料
      • ・継承インターフェース抽象クラスの使い分け
      • ・重複起動の禁止
      • ・数値解析
      • ・多言語化
        • ・DataContractJsonSerializer
        • ・DataGridView
        • ・Enumerable
        • ・HttpClient
        • ・IEnumerable
        • ・IEnumerator
        • ・IEnumerator_yield
        • ・LINQ
        • ・Regex
        • ・SmtpClient
        • ・ハッシュ値の計算
        • ・圧縮
      • ・標準ライブラリに関して
      • ・勉強メモ
    • +CUDA
    • +JavaScript
    • +MSOffice
    • +PHP
    • +PowerShell
    • +Python
    • +Ruby
    • +VBA
    • +misc
    • +画像処理
  • +Server
  • +memo
  • +misc
  • +カメラ
  • +科学技術
  • +記事
  • +数値解析
最新の10件
2018-01-16 更新
  • misc/Hardware/各種プロセッサの倍精度演算性能
2017-11-27 更新
  • Coding/misc/raspberrypi
2017-11-02 更新
  • Coding/.NET/NuGetパッケージの作成
2017-10-19 更新
  • Coding/MSOffice/VSTO/ThisAddin_Startupに処理を書く問題が起きる
2017-06-16 更新
  • Coding/.NET/VisualStudioビルドイベント
2017-05-28 更新
  • misc/Hardware/タブレット向けCPU/複製
2017-05-25 更新
  • Coding/Python/CloudVision
2017-05-24 更新
  • misc/ロードバイク/サイクルロード/奈良
2017-05-11 更新
  • misc/ソフトウェア/文章/文章校正、作成支援ツール
2017-03-15 更新
  • misc/ソフトウェア/プロジェクト管理ツール

Powered By

b_pukiwiki.official.png

edit

参考

  • Coding/.NET/標準ライブラリ/IEnumerable
  • Coding/.NET/標準ライブラリ/IEnumerator
  • Coding/.NET/標準ライブラリ/IEnumerator_yield

このページの目次

  • 概要
  • IEnumeratorの定義
    • MSDN
    • 概要
    • 実装例
  • メモ

概要 †

IEnumerator インターフェースについての理解を深めるための資料集め。
IEnumerable<T> の理解の土台となる知識の習得を目的とする。

↑

IEnumeratorの定義 †

↑

MSDN †

IEnumerator インターフェイス (System.Collections) http://msdn.microsoft.com/ja-jp/library/system.collections.ienumerator(v=vs.110).aspx

↑

概要 †

次のメソッドが必要

  • bool MoveNext()
  • void Reset()
  • object Current {get;}

実際に実装する際は、例えば、以下の定義を使う。

private object[] _list; //返り値を格納
private int _index; //現在の位置
↑

実装例 †

namespace BasicControlFlow
{
  class myEnumerator:IEnumerator
  {
    public int[] value;
    public int index;
 
    public myEnumerator()
    {
      index = -1; // -1にするのがポイント
      value = new int[5];
      value[0] = 10;
      value[1] = 20;
      value[2] = 30;
      value[3] = 40;
      value[4] = 50;
    }
 
    public bool MoveNext()
    {
      index++;
      return (index < value.Length);
    }
 
    public void Reset()
    {
      index = -1; // -1にするのがポイント
    }
 
    public object Current
    {
      get
      {
        return value[index];
      }
    }
  }
}

引用元:[C#] IEnumeratorインターフェイスを実装しforeachに対応したクラスを作成する http://www.ipentec.com/document/document.aspx?page=csharp-inplement-IEnumerator-IEnumerable

↑

メモ †

以上のように、コレクションクラスを作るには、
そのクラス自身に、IEnumerableを実装するとともに、
そのクラス内部のコレクションに対応するIEnumeratorを実装する必要がある。

しかしながら、IEnumeratorの実装は少々めんどくさい。

ということで、楽するため、C#2.0からyieldが追加された。

続いては、Coding/.NET/標準ライブラリ/IEnumerator_yieldについて。


トップ   編集 凍結 差分 添付 複製 名前変更 リロード   新規 一覧 単語検索   ヘルプ   最終更新のRSS
Last-modified: 2014-06-04 (水) (1416d)
Link: Coding/.NET/標準ライブラリ/IEnumerator_yield(1416d) Coding/.NET/標準ライブラリ/IEnumerable(1416d)
Site admin: D*isuke YAMAKAWA

PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji. Powered by PHP 5.3.29. HTML convert time: 0.069 sec.