欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#中迭代器和分部類的使用

 更新時(shí)間:2024年01月22日 10:26:53   作者:wenchm  
迭代器和分部類是C#語(yǔ)言的兩種重要特性,本文主要介紹了C#中迭代器和分部類的使用,具有一定的參考價(jià)值,感興趣的可以了解一下

迭代器在集合類中經(jīng)常使用,而分部類則提供了一種將一個(gè)類分成多個(gè)類的方法,這對(duì)于有大量代碼的類非常實(shí)用。

一、迭代器

迭代器是可以返回相同類型的值的有序序列的一段代碼,可用作方法、運(yùn)算符或get訪問(wèn)器的代碼體。迭代器代碼使用yield return語(yǔ)句依次返回每個(gè)元素,yield break語(yǔ)句將終止迭代??梢栽陬愔袑?shí)現(xiàn)多個(gè)迭代器,每個(gè)迭代器都必須像任何類成員一樣有唯一的名稱,并且可以在foreach語(yǔ)句中被客戶端代碼調(diào)用。迭代器的返回類型必須為IEnumerable或IEnumerator中的任意一種。 

創(chuàng)建迭代器最常用的方法是對(duì)IEnumerator接口實(shí)現(xiàn)GetEnumerator()方法。

1.示例源碼

示例迭代器的用法:Windows應(yīng)用創(chuàng)建一個(gè)名為Family的類并繼承IEnumerable接口,對(duì) IEnumerator接口實(shí)現(xiàn)GetEnumerator()方法創(chuàng)建迭代器。最后遍歷輸出Family類中的內(nèi)容。

//迭代器
using System.Collections;
namespace _01
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            groupBox1.Text = "測(cè)試迭代器";

            Family myfamily = new();            //實(shí)例化Family
            foreach (string str in myfamily)    //遍歷輸出myfamily
            {
                richTextBox1.Text += str + "\n";
            }
        }

        /// <summary>
        /// 創(chuàng)建一個(gè)名為Family的類,其繼承IEnumerable接口,
        /// 該接口公開枚舉數(shù),該枚舉數(shù)支持在非泛型集合上進(jìn)行簡(jiǎn)單迭代。
        /// 對(duì)IEnumerator接口實(shí)現(xiàn)GetEnumerator()方法創(chuàng)建迭代器
        /// </summary>
        public class Family : IEnumerable
        {
            readonly string[] MyFamily = { "父親", "母親", "弟弟", "妹妹" };
            public IEnumerator GetEnumerator()
            {
                for (int i = 0; i < MyFamily.Length; i++)
                {
                    yield return MyFamily[i];   //迭代器返回?cái)?shù)組元素
                }
            }
        }
    }
}

2.生成效果:

 

請(qǐng)讀者思考一下:迭代器的返回值去了哪里?Form1_Load事件是如何獲得數(shù)據(jù)的呢?這個(gè)問(wèn)題的答案才是迭代器知識(shí)點(diǎn)的精華。

二、分部類

分部類使程序的結(jié)構(gòu)更加合理,代碼的組織更加緊密??梢詫㈩?、結(jié)構(gòu)或接口的定義拆分到兩個(gè)或多個(gè)源文件中。每個(gè)源文件包含類定義的一部分,編譯應(yīng)用程序時(shí),VS會(huì)把所有部分組合起來(lái),這樣的類被稱為分部類。

 分部類主要應(yīng)用在以下方面:

  • 當(dāng)項(xiàng)目比較龐大時(shí),使用分部類可以拆分一個(gè)類至幾個(gè)文件中,這樣的處理可以使不同的開發(fā)人員同時(shí)進(jìn)行工 作,避免了效率的低下。
  • 使用自動(dòng)生成的源時(shí),無(wú)須重新創(chuàng)建源文件即可將代碼添加到類中。VS在創(chuàng)建Windows窗體和Web服務(wù)包裝代碼等 時(shí)都使用此方法。開發(fā)人員無(wú)須編輯VS所創(chuàng)建的文件,即可創(chuàng)建使用這些類的代碼。

定義分部類時(shí)需要使用partial關(guān)鍵字,分部類的每個(gè)部分都必須包含一個(gè)partial關(guān)鍵字,并且其聲明必須與其他部分位于同一命名空間。開發(fā)分部類時(shí),要成為同一類型的各個(gè)部分的所有分部類型定義都必須在同一程序集或同一模塊(.exe或.dll文件)中進(jìn)行定義,分部類定義不能跨越多個(gè)模塊。

1.示例源碼

//分部類
namespace _02
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            groupBox1.Text = "四則運(yùn)算:";
            button1.Text = "等于";
            label1.Text= "運(yùn)算結(jié)果:";
                    
            label1.AutoSize = true;
            button1.Size = new Size(65, 23);
            textBox1.Size = new Size(75, 23);
            textBox2.Size = new Size(70, 23);
            textBox3.Size = new Size(205, 23);
            comboBox1.Size = new Size(35, 23);

            comboBox1.Items.AddRange(["加", "減", "乘", "除"]);
            comboBox1.SelectedIndex = 0;
            comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;           
        }

        private void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                Account at = new();
                int M = int.Parse(textBox1.Text.Trim());    //操作數(shù)1
                int N = int.Parse(textBox2.Text.Trim());    //操作數(shù)2
                string str = comboBox1.Text;
                switch (str)
                {
                    case "加": textBox3.Text = Account.Addition(M, N).ToString(); break;
                    case "減": textBox3.Text = Account.Subtration(M, N).ToString(); break;
                    case "乘": textBox3.Text = Account.Multiplication(M, N).ToString(); break;
                    case "除": textBox3.Text = Account.Division(M, N).ToString(); break;
                }
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        #region 加減乘除
        partial class Account							    //分部類第1部分
        {
            public static int Addition(int a, int b)       
            {
                return (a + b);							    //加法
            }
        }
        partial class Account								//分部類第2部分
        {
            public static int Multiplication(int a, int b)	
            {
                return (a * b);								//乘法
            }
        }
        partial class Account                               //分部類第3部分
        {
            public static int Subtration(int a, int b)      
            {
                return (a - b);                             //減法
            }
        }
        partial class Account                               //分部類第4部分
        {
            public static double Division(int a, int b)
            {                
                return ((double)a / b);                     //除法
            }
        }
        #endregion 加減乘除
    }
}

2.生成效果

到此這篇關(guān)于C#中迭代器和分部類的使用的文章就介紹到這了,更多相關(guān)C# 迭代器和分部類內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

您可能感興趣的文章:

相關(guān)文章

  • DataGridView自動(dòng)設(shè)定列寬和行高

    DataGridView自動(dòng)設(shè)定列寬和行高

    這篇文章介紹了DataGridView自動(dòng)設(shè)定列寬和行高的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-02-02
  • 使用C#在注冊(cè)表中保存信息的例子

    使用C#在注冊(cè)表中保存信息的例子

    最近做的項(xiàng)目需要在注冊(cè)表中記錄一些用戶設(shè)置,方便在程序下次啟動(dòng)時(shí)讀取設(shè)置,應(yīng)用上次用戶保存的設(shè)置,挺簡(jiǎn)單的
    2014-04-04
  • 解析C#中斷言與異常的應(yīng)用方式及異常處理的流程控制

    解析C#中斷言與異常的應(yīng)用方式及異常處理的流程控制

    這篇文章主要介紹了C#中斷言與異常的應(yīng)用方式及異常處理的流程控制,一般來(lái)說(shuō)斷言用于修正程序員自己的錯(cuò)誤而異常用于應(yīng)對(duì)程序運(yùn)行過(guò)程中可能出現(xiàn)的錯(cuò)誤,需要的朋友可以參考下
    2016-01-01
  • C#鍵盤輸入回車鍵實(shí)現(xiàn)點(diǎn)擊按鈕效果的方法

    C#鍵盤輸入回車鍵實(shí)現(xiàn)點(diǎn)擊按鈕效果的方法

    這篇文章主要介紹了C#鍵盤輸入回車鍵實(shí)現(xiàn)點(diǎn)擊按鈕效果的方法,可實(shí)現(xiàn)用回車鍵代替點(diǎn)擊按鈕的功能,是非常實(shí)用的技巧,需要的朋友可以參考下
    2014-09-09
  • C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能

    C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能

    這篇文章主要為大家詳細(xì)介紹了C#使用NPOI實(shí)現(xiàn)Excel導(dǎo)入導(dǎo)出功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • c# 所有類型都從Object類型派生

    c# 所有類型都從Object類型派生

    所有的類型最終從object派生,每一個(gè)類型都有一組最基本的方法
    2012-10-10
  • asp.net core項(xiàng)目mvc權(quán)限控制:分配權(quán)限

    asp.net core項(xiàng)目mvc權(quán)限控制:分配權(quán)限

    學(xué)習(xí)的最好方法就是動(dòng)手去做,這里以開發(fā)一個(gè)普通的權(quán)限管理系統(tǒng)的方式來(lái)從零體驗(yàn)和學(xué)習(xí)Asp.net Core。項(xiàng)目的整體規(guī)劃大致如下
    2017-02-02
  • Visual Studio 未能加載各種Package包的解決方案

    Visual Studio 未能加載各種Package包的解決方案

    打開Visual Studio 的時(shí)候,總提示未能加載相應(yīng)的Package包,有時(shí)候還無(wú)法打開項(xiàng)目,各種錯(cuò)誤提示,怎么解決呢?下面小編給大家?guī)?lái)了Visual Studio 未能加載各種Package包的解決方案,一起看看吧
    2016-10-10
  • C#使用Lazy<T>實(shí)現(xiàn)對(duì)客戶訂單的延遲加載

    C#使用Lazy<T>實(shí)現(xiàn)對(duì)客戶訂單的延遲加載

    這篇文章介紹了C#使用Lazy<T>實(shí)現(xiàn)對(duì)客戶訂單延遲加載的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-08-08
  • vista和win7在windows服務(wù)中交互桌面權(quán)限問(wèn)題解決方法:穿透Session 0 隔離

    vista和win7在windows服務(wù)中交互桌面權(quán)限問(wèn)題解決方法:穿透Session 0 隔離

    服務(wù)(Service)對(duì)于大家來(lái)說(shuō)一定不會(huì)陌生,它是Windows 操作系統(tǒng)重要的組成部分。我們可以把服務(wù)想像成一種特殊的應(yīng)用程序,它隨系統(tǒng)的“開啟~關(guān)閉”而“開始~停止”其工作內(nèi)容,在這期間無(wú)需任何用戶參與
    2016-04-04

最新評(píng)論