• C#的一些零碎知识点


    • 什么时候用queue和stack?
    • Arrays和List是“随机”读取的,很灵活。但如果你想用先进先出,或者先进后出的顺序,就可以用queue 和 stack。
    • 遍历List<T>会以什么顺序进行?
    • 这取决于IEnumerator的实现,但是对于List<T>,它将始终按照列表的自然顺序进行,即与索引器的顺序相同list[0],list[1],list[2]等。
    public static Tuple<bool, string>  SaveData(string name,int id){
        //......
        return Tuple.Create<bool, string>(true, "保存成功");
    }
    //外部调用和接收返回值
    Tuple<bool, string> result = SaveData(name, id);
    result.Item1,result.Item2//取值
    
    • C#的 DateTime
    DateTime d = new DateTime();//此时d初始值是0001/1/1 0:00:00
    DateTime a = DateTime.UtcNow ;//世界标准时间(不带时区)
    DateTime b = DateTime.Now ;//系统的本地时间(有时区)
    
    • C#6特性:空传播运算符
    UserMode user = new UserMode();
    Response.Write(user?.Name);//user为空时也不抛异常
    //-----
    Action<string> fb=null;
    if (fb != null)// fb不为空,则调用回调方法
    {
        fb(val);
    }
    //fb?.Invoke(val); 简化版本调用
    
    • 空合并运算符(??)
    • int y = x ?? -1;,如果x不为空,则y为x。如果为空,那么y为-1。
    • 用问号表达式实现:int y = (x==null) ? -1 : x;
    • 可空类型修饰符?
    • int? h=null; 表示可空的整型。
    • DateTime? time = null; 表示time可为空。
    • 如果没问号int和datetime等类型是不能为空的!
    • C#的$符号
    string name="tome";
    string v= string.Format("hi {0}", name);
    string v2= $"hi {name}";
    
    • C#的@符号
    string a1 = @"
    			a,
    			b
    			";//✔
    			
    string a2 = "{"a","b","c"}";//✔
    
     
    string a3 = @"{"a",
    			 "b",
    			 "c"}";//❌,会报异常
    
    string a4 = @"{""a"",
    			 ""b"",
    			 ""c""}" ;//✔
    
    • C#字符串操作大全

    • 预处理器指令,这些命令不会转化为可执行代码,但会影响编译过程的各个方面。如发布两版代码,即基本版和企业版,就可以使用这些预处理器指令。编写调试信息的代码时,也可以使用预处理器指令。常用#region和#endregion。微软提供了:#if、#else、#elif、#endif、#define、#undef、#warning、#error、#line、#region、#endregion、#pragma、#pragma warning、#pragma checksum,各命令用法:博客C# 预处理器指令

    • 输出异常对象主要属性Message/StackTrace/Source,方便日后排查问题。(其他:C#获取堆栈信息,输出文件名、行号、函数名、列号等

    public static void Main(string[] args)
    {
    	Test(1, 0);
    }
    
    public static void Test(int i, int c)
    {
    	try
    	{
    		decimal a = i / c;
    	}
    	catch (Exception ex)
    	{
    		StringBuilder sb = new StringBuilder();
    		sb.AppendLine("===Exception ↓===");
    		sb.AppendLine(ex.Message);
    		sb.AppendLine(ex.Source);
    		sb.AppendLine(ex.StackTrace);
    		sb.AppendLine("=======↑========");
    		Console.WriteLine(sb.ToString());
    		Console.ReadLine();
    		throw;
    	}
    }
    【控制台显示】
    ===Exception↓===
    尝试除以零。
    EventDemo
       在 EventDemo.Program.Test(Int32 i, Int32 c) 位置 D:	estEventDemoEventDemoProgram.cs:行号 39
    =======↑========
    
  • 相关阅读:
    CF704D Captain America 上下界网络流
    CF241E Flights 差分约束
    CF1063F String Journey DP、SAM、线段树
    AGC028E High Elements 贪心、DP、线段树
    Solution -「CF 623E」Transforming Sequence
    Solution -「十二省联考2019」春节十二响
    最大团-最小度不等式
    「Lagrange 插值」学习笔记
    Solution -「NOI.AC 省选膜你赛」union
    Solution -「NOI.AC 省选膜你赛」T2
  • 原文地址:https://www.cnblogs.com/anjun-xy/p/11286480.html
Copyright © 2020-2023  润新知