泛型的几种类型以及初识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();

        }

    }

         五.程序集

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

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

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

          六.扩展方法

          

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实现加减乘除的功能。

         页面:泛型的几种类型以及初识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天,感觉还不错,开始初识写些简单的程序啦。

你可能感兴趣的:(WinForm)