首页 > 代码库 > C# 基础笔记

C# 基础笔记

 
    一、数据类型
        1.var (匿名类型)弱类型
            可以自动检测数据类型;
 
        2.匿名类型对象 (对象初始化)
            Person p = new Person{Id=1,Name="aaaa"}
 
        3.lanbda 表达式    基础使用用法
 
            // 委托是把一个方法作为一个参数传递给另一个方法
 
            委托 
            // 无餐无返的委托
            public delegate void MyDelegate1();
 
/*************************************************************/
            // 有餐无返的委托
            public delegate void MyDelegate2(int i);
 
 
            // 有餐返回是 boolean 类型
            public delegate void MyDelegate3(int i);
 
 
 
            // 静态方法
            static void Show()
            {
                Console.WriteLine("Show");
            }
            // Main 方法里写
            static void Main(string[] args)
            {
 
                // 无餐写法
                MyDelegate1 del = ()=>
                {
                    Console.WriteLine("这是我的 del 方法。")
                }
 
                // 调用输出
                del();
 
                输出结果:   这是我的 del 方法。
 
              // 有参数无返回值
                MyDelegate2 del2 = (a)=>
                {
                    Console.WriteLine("del 方法"+a);
                }
                // 调用输出
                del2(12);
 
                输出结果:   del 方法12
            ********************************************************
 
                // 有参返回是 bool 结果
 
                MyDelegate3 del3 = (a)=> a>12;
 
            ********************************************************
 
            // 微软提供的 Action 委托 有 16 中重载方法 共有 16 参数。
            使用方式:
 
                // 无返回值
                Action a = (a)=>{Console.WriteLine("Hello");}
 
                // 有返回值
                Action <int,string> a1 = (b1,b2)=>
                {
                    Console.WriteLine("Hello"+a1);
                }
 
                List<int> list = new List<int>();
                // 原生写法
                list.Where((num)=>{return num>12;})
                // 简写
                list.Where(m=>m>12);
 
            }
 
 
            // 微软提供的 Action 委托 有 16 中重载方法 共有 16 参数。
            使用方式:
 
          
            // 无返回值
            Action a = (a) => { Console.WriteLine("Hello"); }
                // 有返回值
            Action<int, string> a1 = (b1, b2) =>
                {
                    Console.WriteLine("Hello" + a1);
                }
                List<int> list = new List<int>();
            // 原生写法
            list.Where((num) => { return num > 12; })
                // 简写
                list.Where(m => m > 12);
 
 
 
          
  集合常用的方法:
                Any():判断集合是否包含元素。
                Distinct():去除重复数据。
                排序:指定的列排序
                    升序(list.OrderBy(m => m.Id))
                    降序(list.OrderByDescending(m => m.Id))
                注意:在 EF 里使用 skip 和 Take 分页。必须排序。list 集合里不用。
                Skip(int i): 跳过 n 条数。  Take(int i):每页显示 n 条数据。
                Except(): 排除集合中的数据。原集合数据不变。
                Union(): 把集合中的数据联合到另一个集合中。原集合数据不变。
                分组:常用的五个聚合函数    // 方便统计数据。
                sum:求和 count:总数 max:最大值 min:最小值 avg:平均分
                分组的作用:方便统计数据。
                SelectMany: 把集合中的对象拼接到另一个集合中。具体百度一下。
                Jon(): 链表。
 
     示例用法:
               
    // 表一
    public class Tab1
    {
        public int Tab1Id { get; set; }
        public string Name { get; set; }
    }
    // 表二
    public class Tab2
    {
        public int Tab2Id { get; set; }
        public string Tab2Name { get; set; }
        public int Tab1Id { get; set; }
    }
 List<Tab1> tab1 = new List<Tab1>
         {
              new Tab1{Tab1=1,Name="班级1"},
              new Tab1{Tab1=2,Name="班级2"},
              new Tab1{Tab1=3,Name="班级3"}
         }
        List<Tab2> tab2 = new List<Tab2>
        {
            new Tab2{Tab2Id=1,Tab2Name="张三1",Tab1Id=1},
            new Tab2{Tab2Id=2,Tab2Name="张三2",Tab1Id=1},
            new Tab2{Tab2Id=3,Tab2Name="张三3",Tab1Id=1},
            new Tab2{Tab2Id=4,Tab2Name="张三4",Tab1Id=1},
            new Tab2{Tab2Id=5,Tab2Name="张三5",Tab1Id=1},
            new Tab2{Tab2Id=6,Tab2Name="张三6",Tab1Id=1}
        };
 
                链接:
                 
          // 接收 链接好的数据
            var result = tab2.Where(tab2, t2 => t2.Tab1Id, (t1, t2) => new { t1.Name, t2.Tab2Name });
            // 输出链表结果
            foreach (var item in result)
            {
                Console.WriteLine(item.Name + " " + item.Tab2Name);
            }
            linq(): 跟 lanbda 没什么区别
                // lanbda 写法结果
            foreach (var item in list.Where(m => m.Id == 6))
            {
                Console.WriteLine(item.Id);
            }
            // linq 写法 比 lanbda 可读性强
            var data =http://www.mamicode.com/ from tab1 in list where tab1.Tab1Id < 6 select tab1;
            // linq 写法输出结果
            foreach (var stu in data)
            {
                Console.WriteLine(stu.Id);
            }
            lanbda 与 linq 结合使用
                先写 linq 在写点括起来 使用。
                开发中的调试小技巧:// 在开发中不起作用。
                public override string ToString()
        {
            return $"id:{Id}  name:{Name}";
        }
 
 
 
 
 
 
 
 
 
 
 

C# 基础笔记