• C#泛型与linq


    泛型

      我们仔细观察类中的代码看那些类型需要修改,每次需要新类型(long,double,string),我们都需要重复这个过程。在这些过程之后,我们有了很多几乎相同代码的类,占据了额外的空间。调试和维护这些代码不但复杂而且容易出错。 

      定义:泛型(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];
            }
    
            //int[] arr={1,2,3,4};
    
            public void Print()
            {
                for (int i = stackPointer-1; i>=0 ; i--)
                {
                    Console.WriteLine("value;{0}",statkArray[i]);
                }
            }
    }
    
    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();
    
    
    
            }
    

     泛型委托:

    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();
            }
        }
    

     linq:

    class Program
        {
    
    
            static void Main(string[] args)
            {
    
    
                int[] array = { 11, 12, 13, 14 };
                Func<int, int> func = new Func<int, int>(Method);
    
                var arr = array.Select(func);
                foreach (var item in arr)
                {
                    Console.WriteLine(item);
                }
    
                Console.ReadKey();
    
            }
    
            static int Method(int x)
            {
                if (x == 12)
                {
                    return x;
                }
                else
                {
                    return 0;
                }
            }
        }
    
  • 相关阅读:
    Linux进程管理及while循环(转)
    AT5661-[AGC040C]Neither AB nor BA【模型转换】
    CF573D-Bear and Cavalry【动态dp】
    关于专人整理和分析需求
    Codeforces 1005D Polycarp and Div 3
    [Luogu]P5513 [CEOI2013]Board
    IDEA Mybatis 中文数据添加到MySQL,显示乱码
    如何比较两个word文档的差异
    抗体计算设计
    抗体
  • 原文地址:https://www.cnblogs.com/songfang/p/4119534.html
Copyright © 2020-2023  润新知