zoukankan      html  css  js  c++  java
  • .NET笔记(二)

    null合并运算符

    ?? 运算符称作null 合并运算符。如果此运算符的左操作数不为null,则此运算符将返回左操作数;否则返回右操作数。

    使用Average而产生的一个错误

    因为数据中有DBNull,所以应该写成

        decimal? avgUPri = dt.AsEnumerable().Average(q => q.Field<decimal?>("单价"));
    

    ref、out

    out参数比较简单,加了之后就不需要先申明变量了。
    ref参数使用引用变量时,有些要注意的地方。如果只改变引用对象的成员,那么用不用ref都是一样的效果,但如果要将引用对象进行重新赋值,要得到新的引用的对象,就必须使用ref了,否则不能改变对象。

    断言

    请不要将函数调用放在 Debug.Assert 语句中。改用临时变量

    List

    ArrayList //存储对象,当存储值类型数据时需要装箱,消耗较大。一个ArrayList可以存储不同的数据类型
    Array<T> //指定泛型,不需要装箱、拆箱

    泛型

    优点:算法重用、类型安全、相比object没有拆箱、装箱的性能损耗
    泛型约束where:,可以约束接口、基类、类型、默认构造函数()
    MyClass<T>where T : IComparable<T> //约束T必须实现IComparable接口、基类同理
    where T : class //约束T类型必须为引用类型
    where T : struct //约束T类型必须为值类型
    where T:new() //约束T类型有一个公共无参构造器

    协变、抗变

    逆变:
    泛型类型T可以从基类型更改为该类的派生类型,
    用in关键字标记逆变形式的类型参数,
    而且这个参数一般作输入参数。

    协变:
    泛型类型T可以从派生类型更改为它的基类型,
    用out关键字来标记协变形式的类型参数,
    而且这个参数一般作为返回值

    同步异步

    同步和异步关注的是消息通信机制

    同步:调用者主动等待调用结果
    异步:被调用者通知调用者结果

    阻塞非阻塞

    阻塞和非阻塞关注的是程序在等待调用结果(消息,返回值)时的状态

    阻塞:调用结果返回之前,调用者挂起
    非阻塞:在未获得调用结果之前,调用者不用被挂起

    线程

    做foreach循环时多考虑线程安全性

    在foreach时不要试图对被遍历的集合进行remove和add等操作

    任何集合,即使被标记为线程安全的,在foreach的时候,增加项和移除项的操作都会导致异常

    linq

    from [type] id in source
    [join [type] id in source on expr equals expr [into subGroup]]
    [from [type] id in source | let id = expr | where condition]
    [orderby ordering,ordering,ordering...]
    select expr | group expr by key
    [into id query]
    
  • 相关阅读:
    硬件——STM32 , SN74HC573锁存器
    【模拟】【杂题】jzoj 6345. 【NOIP2019模拟2019.9.8】ZYB建围墙
    归并排序求逆序对
    归并排序求逆序对
    hdu 4135
    hdu 4135
    牛客小白月赛5 A-无关(relationship)
    牛客小白月赛5 A-无关(relationship)
    HDU4027:Can you answer these queries?
    HDU4027:Can you answer these queries?
  • 原文地址:https://www.cnblogs.com/castdream/p/5138953.html
Copyright © 2011-2022 走看看