- 什么时候用queue和stack?
- Arrays和List是“随机”读取的,很灵活。但如果你想用先进先出,或者先进后出的顺序,就可以用queue 和 stack。
- 遍历
List<T>
会以什么顺序进行?
- 这取决于IEnumerator的实现,但是对于
List<T>
,它将始终按照列表的自然顺序进行,即与索引器的顺序相同list[0],list[1],list[2]
等。
-
匿名类型两种写法
-
Tuple,元组,数据集合。
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""}" ;//✔
-
预处理器指令,这些命令不会转化为可执行代码,但会影响编译过程的各个方面。如发布两版代码,即基本版和企业版,就可以使用这些预处理器指令。编写调试信息的代码时,也可以使用预处理器指令。常用
#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
=======↑========