CSharp 7.0 核心技术指南摘录(五)

字符分类静态方法

静态方法包含的方法包含的 Unicode 分类
IsLetterA-Z,a-z和其他字母字符UpperCaseLetter, LowerCaseLetter, TitleCseLetter, ModifierLetter, OtherLetter
IsUpper大写字母UpperCaseLetter
IsLower小写字母LowerCaseLetter
IsDigit0-9和其他字母表中的数字DecimalDigitNumber
IsLetterOrDigit字母和数字(IsLetter, IsDigit)
IsNumber所有数字以及 Unicode 分数和罗马数字符号DecimalDigitNumber, LetterNumber, OtherNumber
IsSeparator空格与所有 Unicode 分隔符LineSeparator, ParagraphSeparator
IsEhiteSpace所有的分隔符,以及 \n, \r, \t, \f和 \vLineSeparator, ParagraphSeparator
IsPunctuation西方和其他字母表中的标点符号DashPunctuation, ConnectorPunctuation, InitialQuotePunctuation, FinalQuotePunctuation
IsSymbol大部分其他的可打印符号MathSymbol, ModifierSymbol, OtherSymbol
IsControl值小于 0x20 的不可打印的控制字符.例如 \r, \n, \t, \0 和 0x7F 与 0x9A 之间字符(无)

数值转换总结

任务函数示例
解析十进制数字Parse, TryParsedouble i = double.Parse(“3.5”);
解析二进制,八进制,十六进制数字Convert.To(‘数字’)int i= Convert.ToInt32(“1E”, 16);
按十六进制格式化ToString(‘数字’)string hex = 45.ToString(“X”);
无损数值转换隐式转换int i = 32; double d = i;
截断式数值转换显式转换double d = 23.5; int i = (int)d;
舍入式数值转换Convert.To()数字double d = 23.5; int i = Convert.ToInt32(d);

静态 Math 类的方法

类别方法
舍入Round, Truncate, Floor, Ceiling
最大值/最小值Max, Min
绝对值和符号Abs, Sign
平方根Sqrt
幂运算Pow, Exp
对数运算Log, Log10
三角函数Sin, Cos, Tan, Sinh, Cosh, Tanh, Asin, Acos, Atan

线程

  • 调用Thread的Join方法可以等待线程结束,Thread.Sleep方法将当前线程的执行暂停指定的时间;在等待线程Sleep或者Join的过程中,线程是阻塞(blocked)的.
  • Thread.Sleep(0)将会导致线程立即放弃自己的时间片,自觉地将CPU交于其他的线程.Thread.Yield()执行相同的操作,但是它仅仅会将资源交给同一个处理器上运行的线程.
  • Sleep(0)和Yield在高级性能调优方面非常有用.同时它还是一种很好的诊断工具.可用于帮助开发者发现与线程安全相关的问题;如果在代码的任意位置插入Thread.Yield()导致程序失败,则代码一定是存在缺陷的.
  • 一般情况下,显式创建的线程称为前台线程.只要有一个前台线程还在运行,应用程序就仍然保持运行状态.而后台线程则不然.当所有前台线程结束时,应用程序就会停止,且所有运行的后台线程也会随之终止.可以使用线程的IsBackground属性来查询或修改线程的前后台状态.
  • 如果想要在工作线程上更新UI,就必须将请求发送给UI线程,这种技术叫封迭.实现这个操作的底层方式有:
    1. 在WPF中,调用元素上的Dispatcher对象的BeginInoke或Invoke方法.
    2. 在UWP应用中.可以调用Dispatcher对象的RunAsync或Invoke方法.
    3. 在Windows Forms应用中,调用控件的BeginInvoke或Invoke方法.

CSharp 7.0 核心技术指南摘录(五)
http://blog.chcaty.cn/2019/09/01/csharp-7.0-he-xin-ji-zhu-zhi-nan-zhai-lu-wu/
作者
caty
发布于
2019年9月1日
许可协议