zoukankan      html  css  js  c++  java
  • C#:iterator 迭代器/partial class 分布类/泛型

    C#:iterator 迭代器/partial class 分布类/泛型

    iterator 迭代器

    写个最简单的迭代,(迭代一个字符串数组):

    1.实现接口中的方法:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Collections;   //动态数组是在这个命名空间下的,所以使用前要包含
     7 
     8 namespace ConsoleApplication1
     9 {
    10     //interator_class是继承IEnumerable接口的类
    11     class interator_class:System.Collections.IEnumerable 
    12     {
    13         //写一个要迭代的字符串数组
    14         ArrayList al = new ArrayList() {"大家好!","我是李晓峰","希望大家多多指教!","谢谢" };
    15 
    16         //实现GETEnumerator()该方法
    17         public System.Collections.IEnumerator GetEnumerator()    
    18         {
    19             for (int i = 0; i < 4; i++)
    20             { yield return al[i]; }       //返回
    21         }
    22     }
    23 }
    复制代码

    2.调用:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace ConsoleApplication1
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             //实例化interator_class类
    14             interator_class ic = new interator_class();  
    15 
    16             //迭代
    17             foreach (string al_ary in ic)
    18             {
    19                 Console.WriteLine(al_ary+"
    ");
    20             }
    21 
    22             //聚焦显示
    23             Console.ReadLine();
    24         }
    25     }
    26 }
    复制代码

    3.运行:

    partial class 分布类:

          简单说就是将一个类在一个命名空间内解剖开:

    例如:写一个partial类,每个class中分布一个方法():

    1.分布类:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace WindowsFormsApplication1
     8 {
     9    //写4个分布类,每个类中分别写了一个运算方法:
    10 
    11    public partial  class jisuan_fangfa
    12     {
    13        public int jiafa(int a,int b)
    14        { return a + b; }
    15     }
    16 
    17    public partial class jisuan_fangfa
    18    {
    19        public int jianfa(int a, int b)
    20        { return a - b; }
    21    }
    22 
    23    public partial class jisuan_fangfa
    24    {
    25        public int chengfa(int a, int b)
    26        { return a * b; }
    27    }
    28 
    29 
    30    public partial class jisuan_fangfa
    31    {
    32        public int chufa(int a, int b)
    33        { return a /b; }
    34    }
    35 }
    复制代码

    2.调用:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Linq;
     7 using System.Text;
     8 using System.Threading.Tasks;
     9 using System.Windows.Forms;
    10 
    11 namespace WindowsFormsApplication1
    12 {
    13     public partial class Form6 : Form
    14     {
    15         public Form6()
    16         {
    17             InitializeComponent();
    18         }
    19 
    20         private void Form6_Load(object sender, EventArgs e)
    21         {
    22             //默认回车键为 计算;
    23             AcceptButton = button1;
    24 
    25             //向combobox内添加选项;
    26             comboBox1.Items.Add(""); comboBox1.Items.Add("");
    27             comboBox1.Items.Add(""); comboBox1.Items.Add("");
    28 
    29             //combobox默认选择 加法
    30             comboBox1.SelectedIndex = 0;
    31 
    32             this.toolStripStatusLabel1.Text = "欢迎使用!";
    33 
    34         }
    35 
    36         private void button1_Click(object sender, EventArgs e)
    37         {
    38             if (textBox1.Text == string.Empty || textBox2.Text == string.Empty)
    39             {
    40                 MessageBox.Show("请输入要运算的数据!");
    41 
    42                 //提示输入信息:
    43                 if (textBox1.Text == string.Empty)
    44                 { errorProvider1.SetError(textBox1, "这里不能为空!"); }
    45                 if (textBox2.Text == string.Empty)
    46                 { errorProvider1.SetError(textBox2, "这里不能为空!"); }
    47             }
    48             else
    49             {
    50                 //实例化类
    51                 jisuan_fangfa jisuan = new jisuan_fangfa();
    52 
    53                 switch (comboBox1.Text.Trim())   //判断combobox中选择计算的模式
    54                 {
    55                         //数据的转换/判断
    56                     case "": textBox3.Text=jisuan.jiafa(Convert.ToInt32(textBox1.Text.Trim()),Convert.ToInt32(textBox2.Text.Trim())).ToString(); break;
    57                     case "": textBox3.Text = jisuan.jianfa(Convert.ToInt32(textBox1.Text.Trim()), Convert.ToInt32(textBox2.Text.Trim())).ToString(); break;
    58                     case "": textBox3.Text = jisuan.chengfa(Convert.ToInt32(textBox1.Text.Trim()), Convert.ToInt32(textBox2.Text.Trim())).ToString(); break;
    59                     case "": textBox3.Text = jisuan.chufa(Convert.ToInt32(textBox1.Text.Trim()), Convert.ToInt32(textBox2.Text.Trim())).ToString(); break;
    60                 }
    61 
    62             }
    63         }
    64     }
    65 }
    复制代码

    3.实践:

         

    泛型:

           泛型是具有占位符(类型参数)的类、结构、接口和方法,这些占位符是类、结构、接口和方法所存储或使用的一个或多个类型的占位符。

    1.接口:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace ConsoleApplication2
     8 {
     9 public interface Interface1<T>
    10     {
    11     T fangfa();
    12     }
    13 }
    复制代码

    2.继承泛型接口的类:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace ConsoleApplication2
     8 {
     9      //Class_t类中有2个泛型,T是继承于T1,T可以实例化
    10    public  class Class_t<T,T1>:Interface1 <T1 > where T:T1, new()
    11     {
    12        //实现该方法:
    13        public T1 fangfa()
    14        { return new T(); }
    15       
    16     }
    17 }
    复制代码

    3.实例化,调用:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace ConsoleApplication2
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             //实例化,并添加类型
    14             Interface1<System.ComponentModel.IListSource> inter = new Class_t<System.Data.DataTable, System.ComponentModel.IListSource>();
    15            
    16             //输出inter.fangfa()的类型
    17             Console.WriteLine("T是:"+inter.fangfa().GetType().ToString()+"类型");  
    18             Console.ReadLine();
    19         }
    20     }
    21 }
    复制代码

    4.运行:

    2.方法();

       写一个用户名和密码的验证方法:

    1.方法:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace ConsoleApplication2
     8 {
     9   public   class Class1
    10     {
    11       public void error_show<T, T1>(T yonghuming, T1 mima)
    12       {
    13           if (string.Equals(yonghuming, "lixiaofeng") && string.Equals(mima.ToString(), "123"))
    14           {
    15               Console.WriteLine("验证成功!");
    16           }
    17           else
    18           { Console.WriteLine("验证失败,你的输入信息有问题!"); }
    19 
    20           
    21       }
    22   
    23     }
    24 }
    复制代码

    2.调用:

    复制代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 
     7 namespace ConsoleApplication2
     8 {
     9     class Program
    10     {
    11         static void Main(string[] args)
    12         {
    13             int mii;  //定义密码变量
    14 
    15             //接受用户输入的用户名和密码
    16             Console.WriteLine("请输入用户名:"); string mizi = Console.ReadLine();
    17             Console.WriteLine("请输入密码:"); mii = Convert.ToInt32(Console.ReadLine());
    18             
    19             //实例化class1,并填入泛型类型
    20             Class1 c1 = new Class1();
    21             c1.error_show<string, int>(mizi, mii );
    22 
    23             Console.ReadLine();
    24         }
    25     }
    26 }
    复制代码

    3.验证:

      

    水平有限,还望指教,谢谢!

     
     
     
    标签: C#
  • 相关阅读:
    So sad! ,Asphyre Closure
    Asphyre Sphinx is a cross-platform framework for developing 2D/3D video games and interactive business applications
    Mark: admob for delphi xe4 integrated 80% -done!-95% to do more test
    CCBPM新手流程设计教程
    CCBPM 常用API接口说明
    CCBPM H5版本中组织结构集成以及与外部数据源同步介绍
    关于驰骋工作流引擎ccbpm 在工业自动化环境下的应用演示实例
    关于驰骋工作流引擎ccbpm 在工业自动化环境下的 应用演示实例
    CCFlow新版本的自由流程、自定义流程功能说明
    关于驰骋工作流引擎ccbpm对bpmn2.0的支持
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/3269711.html
Copyright © 2011-2022 走看看