zoukankan      html  css  js  c++  java
  • C# 基础

    一、多态(virtual,override,new,abstract 关键字)
      抽象类:abstract必须子类重写,并且不能申明主体
           virtual 可以不重写,编译器会警告,必须申明主体
       实现类:override 重写,对应父类的
    abstract 和 virtual
           new 对应父类的
    virtual
      override sealed 不允许子类 重写
     1     class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             Person person1 = new Chiness("吉米");
     6             Person person2 = new Japanese("山本");
     7             person1.SayHello();
     8             person2.SayHello();
     9         }
    10     }
    11     public class Person
    12     {
    13         public string Name { set; get; }
    14         public Person(string name)
    15         {
    16             this.Name = name;
    17         }
    18         public virtual void SayHello()
    19         {
    20             Console.WriteLine("I'm Person,my name is " + this.Name);
    21         }
    22     }
    23     public class Chiness : Person
    24     {
    25         public Chiness(string name)
    26             : base(name)
    27         {
    28 
    29         }
    30         public override void SayHello()
    31         {
    32             Console.WriteLine("I'm Chiness,my name is " + this.Name);
    33         }
    34     }
    35     public class Japanese : Person
    36     {
    37         public Japanese(string name)
    38             : base(name)
    39         {
    40 
    41         }
    42         public new void SayHello()
    43         {
    44             Console.WriteLine("I'm Japanese,my name is " + this.Name);
    45         }
    46     }
    View Code
       
      


    二、装箱和拆箱
     1     class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             ArrayList listArr = new ArrayList();
     6             List<object> list = new List<object>();
     7             Stopwatch sw = new Stopwatch();
     8             sw.Start();
     9             int k = 10;
    10             for (int i = 0; i < 10000000; i++)
    11             {
    12                 object kk = k;
    13                 list.Add(kk);
    14             }
    15             //装箱:00:00:00.9023259
    16             //拆箱:00:00:00.0885700
    17             sw.Stop();
    18             Console.WriteLine(sw.Elapsed);
    19             Console.ReadKey();
    20         }
    21     }
    View Code

      同样的操作装箱需时间:00:00:00.9023259,拆箱只需00:00:00.0885700


    三、委托
    using System;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            public delegate int dele(string x);
            static void Main(string[] args)
            {
                Action<string> action = str => { Console.WriteLine(str + "1"); Console.WriteLine(str + "2"); };
                action("123");//1231,1232
                Func<string, int> func1 = x => A(x);
                int i = func1("123456");
                Console.WriteLine(i);//16
                Func<string, string, string, string> func2 = (x, y, z) => x + y + z;
                Console.WriteLine(func2("1","2","3"));//123
    
            }
            public static int A(string a)
            {
                return a.Length + 10;
            }
        }
    }
    View Code

    四、Linq 乱 ... 仔细看!!!
    using System;
    using System.Collections;
    using System.Linq;
    using System.Collections.Generic;
    
    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                List<A> list = new List<A>() 
                {
                    new A(){Id=1,Name="AA"},
                    new A(){Id=6,Name="WW"},
                    new A(){Id=4,Name="TT"},
                    new A(){Id=7,Name="SS"},
                    new A(){Id=5,Name="RR"},
                    new A(){Id=2,Name="QQ"},
                    new A(){Id=3,Name="GG"},
                };
                //执行
                Action<List<A>> action = x =>
                {
                    x.ForEach(item => Console.WriteLine("{0},{1},{2}", item.Id, item.Name, item.Age));
                };
                Action<A> actionSingle = x => Console.WriteLine("{0},{1},{2}", x.Id, x.Name, x.Age);
                var list1 = list;
                //筛选
                var l = list1.Where(n => n.Id > 3);
                //获取,排序 OrderByDescending 降序,OrderBy 升序
                list1 = l.Select(n => n).OrderByDescending(x => x.Id).ToList();
                //action(list1);
    
                var list2 = list;
                //所有元素都满足返回 true 否则返回 false
                bool b = list2.All(n => n.Age == 1);
                //Console.WriteLine(b);
                //任何一元素满足返回 true 否则返回 false
                b = list2.Any(n => n.Id > 1);
                //获取平均值
                double average = list1.Average(n => n.Id);
                //Console.WriteLine(average);
                list = list.Concat(list).ToList();
                //action(list);
                A a = new A() { Id = 1, Name = "AAA" };
                list.Add(a);
                b = list.Contains(a);
                //Console.WriteLine(b);//true
                int i = list.Count(x => x.Name.Length > 2);
                //Console.WriteLine(i);//1
                //返回 System.Collections.Generic.IEnumerable<T> 类型
                var listAble = list.DefaultIfEmpty();
                list.Add(a);
                //action(list);
                list = list.Distinct().ToList();
                //action(list);
    
                //First 获取第一个满足条件的数据,不满足条件的报异常
                var listOne = list.First<A>(n => n.Id > 1);
                //FirstOrDefault 不满足条件的报异常的情况 返回null 值
                listOne = list.FirstOrDefault<A>(n => n.Id > 12);
                //actionSingle(listOne);
                // Last 获取最一个满足条件的数据,不满足条件的报异常
                var listLast = list.First<A>(n => n.Id > 12);
                //FirstOrDefault 不满足条件的报异常的情况 返回null 值
                listOne = list.FirstOrDefault<A>(n => n.Id > 12);
    
                // Union 对两个集合采取“并”操作
                list = list.Union(list).ToList();
                list = list.Union(new List<A>() { new A() { Id = 12, Name = "123465", Age = 122 } }).ToList();
                //action(list);
                //Intersect  对两个集合采取“交”操作
                list = list.Intersect(new List<A>() { new A() { Id = 12, Name = "123465", Age = 122 } }).ToList();
                //action(list);
            }
        }
        public class A
        {
            public int Id { set; get; }
            public string Name { set; get; }
            public int Age { set; get; }
        }
    }
    View Code





  • 相关阅读:
    jQuery禁用或启用
    ASP.NET MVC一次删除多笔记录
    在你的ASP.NET MVC中使用查找功能
    Get radio selected value
    绑定一个值给radio
    ASP.NET MVC实现权限控制
    为Guid数据类型的属性(property)赋值
    Razor语法中绑定一个值给checkbox
    判断IEnumerable<T>集合中是否包含有T对象
    SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
  • 原文地址:https://www.cnblogs.com/Jacob-Wu/p/6022073.html
Copyright © 2011-2022 走看看