C#学习笔记

导读:本篇文章讲解 C#学习笔记,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

1.      比较两个集合是否相等

方法:a、如果两个集合的items 是相同引用的对象,则直接使用sequenceEqual 方法。

               b、如果两个集合的items不是相同引用的对象,则对象的类型需要实现

                              IEquatable<T> 接口,后使用sequenceEqual方法

 

2.  控制翻转(inversion of control)是一种模式,依赖注入是实现了这种模式的方式

如果一个组件是以接口的形式写成的,他对外暴露的是接口,至于使用这个组件的其他组件怎么实现这个接口就是自己决定了,这是发生了控制权从此组件向其他组件翻转的情况。依赖不再是基于此组件的,而是基于后面的注入了。

 

3.  异步与多线程

异步用于IO密集的场景,由于存在直接读取内存的存在(DMA)

多线程用于CUP密集的场景

 

4.  方法重入

指多线程调用时,同一个方法被多个线程同时调用的情况

 

5.  委托绑定实例方法和静态方法的区别

_target,_methondPtr 是委托类型的两个成员变量

当实例方法时:_target 绑定为方法所在类型的某个实例

当静态方法时:_target 绑定为null

_methondPtr 两者都绑定为方法的地址

 

6.  当一个类中有很多事件的时候,使用stem.ComponentModel.EventHandlerList

可以有效减小对象的大小

 

7.  纤程

完全有程序员控制,操作系统不知道其的存在, 一个线程可以包含0个或者多个纤程。 在CRL 中创建的一个线程不一定对应这操作系统的一个线程,也可能对应着一个纤程

 

8.  线程本地存储(Thread Local Storage)

存储在线程块中的一个结构,用来存放该线程内共享的数据,进程内的其他线程不能访问

 

9.  线程同步

每个分配在堆上的对象都有两个额外字段,一个是类型指针,一个是同步索引。类型指针用于找到给对象,同步索引用于索引同步块数组中的同步块。

当一个对象用于同步锁时,其同步索引被指向一个可用的同步块,如果一个线程试图进入同步时,会通过同步索引找到其同步块,然后检查同步对象的同步块是否在被其他线程使用,如果在使用,就等待。

 

10.为什么值类型不能用于同步锁

由于.net中的同步机制使用的是同步块,而值类型是分派在堆栈上的,其没有同步索引,也没有同步块。使用lock关键字,将会直接导致编译错误。

使用Moniter的话,其实是使用了装箱,但是会导致运行时错误,因为每次装箱都会在堆上产生不同的对象。

 

11. 数据访问接口

OLEDB(Object Linking and Embedding,Database,又称为OLE DB或OLE-DB)

ODBC(Open DatabaseConnectivity,ODBC)开放数据库互连

 

 

11.Property(属性) 与Attribute(特征)的关系

 

Property:是面向对象编程层面上的概念, 比如抽象一个Car 类, 那么车的

速度, 颜色 等就是Property。

Attribute:是编程语言文法层面上的概念, 例如标示A类和B类有一下区别,就可以给他们加上特征。

 

12. WPF中zaml文件中x:Class=” ”的内容是告诉编译器将zaml文件编译成C#类的名称,这个名称用于和behind cold 的类合并的。


13.如何在System.Timers.Timer的回调函数中传递参数?

     思路: 采用匿名方法传递参数

Timer timer=new Timer();
timer.Elapsed += new ElapsedEventHandler((s, e) => { Callbcke(s, e, param); });

其中param为要传递的参数。

 

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/14830.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!