• 泛型的几种类型以及初识winform


                 今天学习的可以分为两类吧,但是学习的都是比较抽象的,不太容易掌握吧。首先我们大部分时间学习了泛型,泛型的委托,泛型接口以及枚举器,迭代器,扩展方法;最后简单的认识了webform,实现了一个简单的功能。

            一.泛型

            定义:泛型(generic)可以让多个类型共享一组代码,泛型允许我们声明类型参数化。可以用不同的类型进行实例化,说白了,就是可以用类型占位符,创建具体类型致命的真实概念。C#中提供了五种泛型,类,结构,接口,委托和方法。下面举例说明可能更容易理解,

            

    class MyStack<T>
        {
            T[] statkArray;
            int stackPointer = 0;
            const int MaxStack = 10;
            bool IsStackFull { get { return stackPointer < MaxStack; } }
            bool IsStackEmpty { get { return stackPointer <= 0; } }
            public void Push(T x)
            {
                if (!IsStackFull)
                {
                    statkArray[stackPointer++] = x;
                }        
            }
            public T Pop()
            {
                return(!IsStackEmpty)?statkArray[--stackPointer]:statkArray[0];
            }
            public void Print()
            {
                for (int i = stackPointer-1; i>=0 ; i--)
                {
                    Console.WriteLine("value;{0}",statkArray[i]);
                }
            }
        }
    class Program
        {
            static void Main(string[] args)
            {
                MyStack<int> stackint = new MyStack<int>();
                MyStack<string> stackstring = new MyStack<string>();
    
                stackint.Push(3);
                stackint.Push(5);
                stackint.Push(7);
                stackint.Push(9);
    
                stackint.Print();
                stackstring.Push("Hava a good day");
                stackstring.Push("Hi there!");
                stackstring.Print();
                Console.ReadKey();
            }
        }

               像上面的就是定义了一个泛型,传的参数值可以是int,string等的类型。

               二.泛型的委托

         我想其前几天学习委托时间感觉很抽象额,把方法作为参数来传值,初次接触所以再后来自己写委托方发时间不知道该怎么下手,后来知道啦,但是还是不熟悉的,因为见得真的很少,可是今天讲完泛型的委托时间感觉更深一层的理解了委托,或许在大家看来很简单吧,但是我还是一个初学者,还是需要好好学习的好好写程序的。泛型的委托也是比较抽象的,写个例子给看下吧。

          

    class simple
        {
            static public void PrintString(string s)
            {
                Console.WriteLine(s);
            }
            static public void PrintUpperString(string s)
            {
                Console.WriteLine("{0}",s.ToUpper());
            }
        }
    delegate  void MyDelegate<T>(T value);
        class Program
        {
            static void Main(string[] args)
            {
                var mydel = new MyDelegate<string>(simple.PrintString);
                mydel += simple.PrintUpperString;
                mydel("rocky");
                Console.ReadKey();
            }
        }

            嘿嘿,这个简单的小例子很容易理解吧,嘿嘿。

              三.泛型的接口

              泛型的接口这个很简单的啦感觉,可能是因为还没有写几个小例子吧,不过从定义上面我理解啦,用一个小例子帮助我们记忆啦。

              

     interface IMyfc<T>
        {
            T returnIt(T inValue);
        }
    class Simple<S>:IMyfc<S>
        {
            public S returnIt(S inValue)
            {
                return inValue;
            }
        }
    class Program
        {
            static void Main(string[] args)
            {
                var trivInt = new Simple<int>();
                var trivString = new Simple<string>();
                Console.WriteLine(trivInt.returnIt(5));
                Console.WriteLine(trivString.returnIt("张三"));
                Console.ReadKey();
            }
        }

            这个小例子看完很容易理解吧,嘿嘿···

             四. 枚举器迭代器

              在这里说的就是foreach有两个方法IEnumerable()与GetEnumerable(),这个简单了解下就好啦,不过foreach要学会用额。

          

    class Program
        {
            static void Main(string[] args)
            {       
                int[] arr1 = {10,12,23,15 };   
                foreach (var item in arr1)
                {
                    Console.WriteLine(item);
                }
                Console.ReadKey();
            }
        }

             五.程序集

             其实程序集就是在不同的项目中,要想引用他的方法,那么就需要添加引用,而之后我们就可以使用其中的方法。

                             

             选择要添加的程序集即可。

              六.扩展方法

              

    class MyData
        {
            private double d1;
            private double d2;
            private double d3;
            public MyData(double d1, double d2, double d3)
            {
                this.d1 = d1;
                this.d2 = d2;
                this.d3 = d3;
            }
            public double Sum()
            {
                return d1 + d2 + d3;
            }
        }
    static class MyExtension
        {
            public static string MyObjectMethod(this object dsadsa,string content)
            {
                return content + "|";
            }
            public static double MyDataMethod(this MyData date,double d1,double d2,double d3)
            {
                return (d1 + d2 + d3) / 3;
            }
        }
    class Program
        {
            static void Main(string[] args)
            {
              //  object o = new object();
              //Console.WriteLine(o.MyObjectMethod("我是我"));
              MyData date = new MyData(1,2,3);
              Console.WriteLine(date.MyDataMethod(11, 12, 13));
              Console.ReadKey();
            }
        }

               这是一个简单的扩展方法的例子。

                  七.用winform实现加减乘除的功能。

             页面:

            后台代码:

     public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
               
            }
    
            private void btn1_Click(object sender, EventArgs e)
            {
                string num = this.txt1.Text;
                string num0 = this.txt2.Text;
                if (string.IsNullOrEmpty(num) || string.IsNullOrEmpty(num0))
                {
                    MessageBox.Show("请输入数字");
                }
                else
                {
                    int num1 = int.Parse(num);
                    int num2 = int.Parse(num0);
                    string comb = (this.comboBox1.SelectedItem).ToString();
                    int resoult = 0;
                    switch (comb)
                    {
                        case "+": resoult = num1 + num2;
                            break;
                        case "-": resoult = num1 - num2;
                            break;
                        case "*": resoult = num1 * num2;
                            break;
                        case "/":
                            if (num2 != 0)
                            {
                                resoult = num1 / num2;
                            }
                            else
                            {
                                MessageBox.Show("输入有误,除数不能为0,请重新输入");
                            }
                            break;
                        default: break;
                    }
                    this.txt3.Text = resoult.ToString();
                }
            }
            private void btnclear_Click(object sender, EventArgs e)
            {
                this.txt1.Text=string.Empty;
                this.txt2.Text = string.Empty;
                this.txt3.Text = string.Empty;
                this.comboBox1.Text = string.Empty;
            }
        }

              好啦,我今天学习了这些,有些以后可能我要是做项目用不到啦,但是我感觉还是做好了解下,掌握啦。这是在云何学院学习的第21天,感觉还不错,开始初识写些简单的程序啦。

    我是小白,新建立了一个的群:461431726,希望在这里和大家一起交流,共同学习。前端的话建议加群:646564351,谢谢
  • 相关阅读:
    二、gulp报错The following tasks did not complete
    一、python演示创建文件
    二、小程序的框架周期
    一、更改路由配置
    spring boot 实现文件下载
    sonarqube扫描安卓代码
    jenkis +sonarqube 对后端代码静态扫描,钉钉群通知执行结果(记录)
    SonarQube 平台搭建代码审查平台步骤
    python list的一个面试题
    oracle单机部署
  • 原文地址:https://www.cnblogs.com/dyxd/p/4119827.html
Copyright © 2020-2023  润新知