校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > php和C#的yield迭代器實現方法對比分析

php和C#的yield迭代器實現方法對比分析

熱門標簽:江西手機自動外呼防封系統是什么 外呼系統撥打暫時無法接通 怎么向銷售公司推銷外呼系統 高德地圖標注家 廣州防封卡外呼系統多少錢一個月 廣東地市地圖標注 仁和怎么申請400開頭的電話 哪里辦理400電話 長春人工外呼系統服務商

本文實例講述了php和C#的yield迭代器實現方法對比。分享給大家供大家參考,具體如下:

yield關鍵字是用來方便實現迭代器的,免去了手工寫迭代器的繁瑣。迭代器常被用來實現協程,所以大部分的協程中都有yield關鍵字,可以參看unity3D的協程。

C#版本:

函數的返回類型必須為 IEnumerable、IEnumerableT>、IEnumerator 或 IEnumeratorT>。

IEnumerable表示一個類可以迭代,也就是可以用foreach遍歷,IEnumerator是真正的迭代器實現,IEnumerable和IEnumerator一個是使用迭代器的接口,一個是實現迭代器的接口。

C#是怎么用yield實現迭代器的呢?其實是編譯器根據yield關鍵字生成了內部類,反編譯一下就可以看到。

using System.Collections;
class Program
{
   //返回IEnumerable接口,其實返回了編譯器生成的內部類
  public static IEnumerable fib(int n)
  {
    int cur = 1;
    int prev = 0;
    for (int i = 0; i  n; i++)
    {
      yield return cur;
      int temp = cur;
      cur = prev + cur;
      prev = temp;
    }
  }
  static void Main()
  {
    // Display powers of 2 up to the exponent 8:
    foreach (int i in fib(9))
    {
      Console.Write("{0} ", i);
    }
  }
}
// prints: 1 1 2 3 5 8 13 21 34

php版本:

函數返回類Generator,而類Generator實現了迭代器接口Iterator。

?php
//返回Iterator接口,php解釋器幫我們返回了Generator類
function fib($n)
{
  $cur = 1;
  $prev = 0;
  for ($i = 0; $i  $n; $i++) {
    yield $cur;
    $temp = $cur;
    $cur = $prev + $cur;
    $prev = $temp;
  }
}
$fibs = fib(9);
foreach ($fibs as $fib) {
  echo " " . $fib;
}
// prints: 1 1 2 3 5 8 13 21 34

更多關于PHP相關內容感興趣的讀者可查看本站專題:《php面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家PHP程序設計有所幫助。

您可能感興趣的文章:
  • C# Entity Framework中的IQueryable和IQueryProvider詳解
  • C#中HttpWebRequest、WebClient、HttpClient的使用詳解
  • C# Distinct和重寫IEqualityComparer時要知道的二三事
  • C#中Task.Yield的用途深入講解
  • C# DataGridView綁定數據源的方法
  • 詳解C# WebApi 接口測試工具:WebApiTestClient
  • C#中WPF ListView綁定數據的實例詳解
  • C# IQueryable及IEnumerable區別解析

標簽:濮陽 海北 文山 黔東 廈門 湘西 梅河口 惠州

巨人網絡通訊聲明:本文標題《php和C#的yield迭代器實現方法對比分析》,本文關鍵詞  php,和,的,yield,迭代,器,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《php和C#的yield迭代器實現方法對比分析》相關的同類信息!
  • 本頁收集關于php和C#的yield迭代器實現方法對比分析的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 洪湖市| 福泉市| 丰县| 庆城县| 简阳市| 高密市| 邵阳市| 金川县| 自治县| 西乌珠穆沁旗| 武清区| 天台县| 白山市| 夏津县| 赤水市| 黄山市| 金溪县| 马关县| 潜江市| 顺平县| 神农架林区| 洛宁县| 金坛市| 和顺县| 高雄市| 于田县| 凌源市| 乌拉特中旗| 平江县| 彰化市| 吉隆县| 汨罗市| 恩平市| 盘锦市| 社会| 辉县市| 车险| 吕梁市| 合肥市| 洪泽县| 西充县|