首页 > 编程语言 >C#高级编程2

C#高级编程2

时间:2023-03-12 11:00:11浏览次数:34  
标签:Console C# 创建 编程 高级 Linq names WriteLine public

 

 

 

 

C#快速构建代码块 简写功能总结表格

简写

功能

示例

prop

创建属性代码块

publicint MyProperty {get;set; }

cw

创建对Console.WriteLine();的调用

Console.WriteLine();

ctor

创建构造函数

public Program (){}

~

创建析构函数

~Program(){}

svm

创建static viod函数声明

staticvoid Main(string[] args){}

 

 

 

using

创建using代码块

using (resource){}

while

创建while循环

while (true){}

unsafe

创建unsafe代码块

 

unsafe{}

 

checked

创建checked块

checked{}

unchecked

创建unchecked代码块

unchecked{}

switch

 

创建switch代码块

switch (switch_on){default:}

 

struct

 

创建struct声明

struct MyStruct{}

 

namespace

创建namespace声明

namespace MyNamespace{}

lock

 

创建lock块

lock (this){}

interface    

创建interface声明

interfaceIInterface{}

if

创建if块

if (true){}

for

创建递增for循环

for (int i = 0; i < length; i++){}

forr

创建递减for循环

for (int i = length - 1; i >= 0; i--){}

foreach   

创建foreach循环

foreach (var itemin collection){}

enum              

创建enum声明

enumMyEnum{}

else

创建else块

else{}

do

创建do(while)循环

do{} while (true);

class

创建类声明

classMyClass{}

用装饰器模式实现AOP

Person类只会洗澡,而PersonDecorator类可以实现:脱衣服→洗澡→穿衣服,而无需改变原来的Person类;

 public interface IPerson
    {

        public void Bath();
    }
    public class Person:IPerson
    {
    public string Name { get; set; }
        public Person(string name) => Name = name;
        public void Bath() => Console.WriteLine($"我叫{Name},我要洗澡啦");
    }
    public class PersonDecorator:IPerson
    {
        public  IPerson Person { get; }
        public PersonDecorator(IPerson person)=> Person = person;
        public void TakeOff() => Console.WriteLine("脱衣服。。。");
        public void PutOn() => Console.WriteLine("穿衣服。。。");

        public void Bath()
        {
            TakeOff();
            Person.Bath();
            PutOn();
        }

        
    }
    

 static void Main(string[] args)
        {
            var person = new Person("刘老根");
            person.Bath();
            Console.WriteLine("-----------------------");
            var personDecorator=new PersonDecorator(person);
            personDecorator.Bath();
        }


我叫刘老根,我要洗澡啦
-----------------------
脱衣服。。。
我叫刘老根,我要洗澡啦
穿衣服。。。

LINQ操作符总结

分类

操作符

说明

条件类

Where

用lambda表达式作为查询条件names.Where(n => n.StartsWith("J"))

OfType<TResult>

按照数据类型进行查询,

选择类

Select

names.Where(n => n.StartsWith("J")).OrderBy(n => n).Select(n => n)

SelectMany

二级选择,从中间选择结果中进行进一步选择

排序类

OrderBy

按照某个字段或属性进行排序

ThenBy

二级排序,先按照某个字段进行排序,然后按照另一个字段再次裴谞

OrderByDecending

降序排序

ThenByDecending

二级排序,降序

Reverse

反转顺序,倒序

合并类

Join

合并不直接相关的集合

GroupJoin

连接两个集合,组合其结果

分组类

GroupBy

分组from book in Books group book by book.Publisher into grouping

ToLookup

通过创建一对多字典,来组合元素

布尔类

Any

任意一个元素满足条件,就返回true

All

所有元素均满足条件,才返回true

Contains

包含某个元素,就返回true

分区类

Take

获得指定数量的结果

Skip

跳过指定数量的结果

TakeWhile

获取满足指定条件的,指定个数的结果

SkipWhile

跳过满足指定条件的,指定个数的结果

复合类

Distinct

删除重复元素,去重

Union

合并两个集合并去重,相当于先并集再去重

Intersect

交集

Zip

并集

Except

差集

索引类

First

满足条件的第一个元素

FirstOrDefault

满足条件的第一个元素,如果找不到,就返回元素的默认值

Last

满足条件的最后一个元素

LastOrDefault

满足条件的最后一个元素,如果找不到,就返回元素的默认值

ElementAt

按照索引查找元素

ElementAtOrDefault

按照索引查找元素,如果找不到,就返回元素的默认值

Single

只返回一个满足条件的元素,如果找到多个,就抛出异常

SingleOrDefault

只返回一个满足条件的元素,如果找不到,就返回元素的默认值

统计类

Count

元素个数

Sum

所有元素求和var query = nums.Sum(i => (long)i);

Min

最小值

Max

最大值

Average

平均值

Aggregate

总计 int[] numbers = new int[] { 1, 2, 3, 4 };

转换类

ToArray

转换为数组

AsEnumerable

转换为IEnumerable子类

ToList

转换为IList子类

ToDictionary

转换为IDictionary子类

Cast<TResult>

转换为指定类型

初始类

Empty

生成一个空集合

Range

生成一系列数字

Repeate

生成一个元素都是同一个值的集合

Linq查询的延迟执行

using System;
using System.Collections.Generic;
using System.Linq;
namespace ConsoleCore230207
{
    class Program
    {
        static void Main(string[] args)
        {
            DeferredQuery();
            DeferredQuery2();
        }

        //延迟查询函数 Linq表达式形式
        static void DeferredQuery()
        {
            //定义一个集合
            var names = new List<string> { "Bert", "Jack", "Rose", "Tom" };
            //定义Linq表达式 此时仅仅定义了表达式,而未执行
            //Linq表达式在遍历时才执行
            //{System.Linq.OrderedEnumerable<string, string>}
            var namesWithJ = from n in names where (n.StartsWith("J")) orderby n select n;
            Console.WriteLine("第1次遍历:");
            //遍历时,执行Linq表达式
            foreach (var item in namesWithJ)
            {
                Console.WriteLine(item);
            }
            names.Add("Json");
            names.Add("Jerry");
            names.Add("Job");
            Console.WriteLine("第2次遍历:");
            //遍历时,再次执行Linq表达式,此次输出更新集合上的查询结果
            foreach (var item in namesWithJ)
            {
                Console.WriteLine(item);
            }
        }
        //扩展方法式的 延迟查询
        static void DeferredQuery2()
        {
            //定义一个集合
            var names = new List<string> { "Bert", "Jack", "Rose", "Tom" };

            //扩展方法形式的Linq查询
            //Linq查询的扩展方法在遍历时才执行
            //namesWithJ的数据类型是枚举器{System.Linq.Enumerable.SelectIPartitionIterator<string, string>}
            var namesWithJ = names.Where(n => n.StartsWith("J")).OrderBy(n => n).Select(n => n);
            Console.WriteLine("第1次遍历:");
            //遍历时,执行Linq表达式
            foreach (var item in namesWithJ)
            {
                Console.WriteLine(item);
            }
            names.Add("Json");
            names.Add("Jerry");
            names.Add("Job");
            Console.WriteLine("第2次遍历:");
            //遍历时,再次执行Linq表达式,此次输出更新集合上的查询结果
            foreach (var item in namesWithJ)
            {
                Console.WriteLine(item);
            }
        }
        //两种方法的输出结果相同;表达式形式和扩展方法形式的Linq查询,是等价的;
        //第1次遍历:
        //Jack
        //第2次遍历:
        //Jack
        //Jerry
        //Job
        //Json

    }
}

 

 

 

 

 

 

#end

标签:Console,C#,创建,编程,高级,Linq,names,WriteLine,public
From: https://www.cnblogs.com/zhangdezhang/p/17099088.html

相关文章

  • contenttypes
    contenttypes组件的内部帮我们讲django的ORM中定义的所有表都自动手机起来,并保存至后续开发中如果遇到一张表与其他n张表进行关联,就可以基于contenttypes实现。表定......
  • 指针类型转换:reinterpre_cast
    指针类型转换:reinterpre_cast//用于指针类型之间的转换//用于整数和指针类型的转换//原理是直接从二进制位进行复制,是一种极其不安全的转换int*p=reinterpre_cas......
  • 「解题报告」ARC134E Modulo Nim
    真的不想写这题,感觉这种题出的很怪。但是今天模拟赛出了,所以我还是写一下吧。首先我们只关心当前所有数的集合,有多少我们不关心。设这个集合为\(S\)。观察样例,感觉可以......
  • C语言中的const
    C语言中的constconst修饰的全局变量保存在常量区,不可通过任何方式改变其值const修饰的全局变量链接属性为外部链接属性const修饰的局部变量保存在栈区,不可通过变量名直......
  • SignalRChat聊天处理类
    usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingMicrosoft.AspNet.SignalR;usingSignalRChat.Common;namespaceSignalRChat{......
  • C++中的const
    C++中的const-const修饰的全局变量保存在常量区,不可通过任何方式修改其值-const修饰的全局变量默认为内部链接属性-const修饰的局部变量保存在符号表,且无法取得符号......
  • 在VMware虚拟机上安装CentOS 7,以及CentOS 7图形界面的安装
    一、安装VM虚拟机1.1下载虚拟机软件,官方地址位:http://www.VMware.com1.2下载完VM虚拟机后进行安装(由于已经安装完成,就不进行图片描述)下载完成后,双击打开.exe文件,首先......
  • java动态代理和CGLIB
    参考:https://www.jianshu.com/p/cbd4c1ad8a75上一篇我们利用jdk的动态代理实现了一个简单的注解处理器,可以自动给一个button添加指定的监听器.但是jdk的动态代理有一个......
  • ceshi
      ......
  • 静态类型转换:static_cast
    静态类型转换:static_cast//用于基本类型的转换,即内置类型,但不可用于基本类型指针的转换inta=10;int*pi=&a;char*pc=static_cast<char*>(pi);//错误,不可用......