目录
7. Action和function区别,以及内部实现,注册函数如何防止重复,如何删除
6.C#闭包实现
闭包即闭包是指可以包含自由(未绑定到特定对象)变量的代码块.表现出来是调用函数结束后,函数内的变量的生存周期拉长到调用者的生命。
贴一段简单的闭包实现代码
var list =new Action[10];
for(int i=0;i<list.Length;i++){
list[i]=()=>{Console.WriteLine(i);};
}
foreach(var item in list)
{
item();
}
7. C#委托Action和function区别,注册函数如何防止重复,如何删除
Action和function的区别:
Action:表示不带返回值,可传递0-16个泛型参数委托;有传入int、string、bool类型的参数,无返回值的委托
Func:表示带泛型返回值,可传递0到16个泛型参数的委托;传入参数为object、string类型的参数,返回值为int的委托
两者直观的区分就是是否带返回值。
注册函数如何防止重复,如何删除:
笔者认为自己实现观察者模式的事件机制框架为每个事件配置唯一标志就行了。
(会转载一个代码可以结合着 看看)
8. Map怎么实现的,Dictionary如何实现
map是一种key-value键值对的存储结构,其中key是不能重复的,其底层实现采用的是hash表。
C#中不含map但是同样可以实现map的效果 就是 Dictionary,贴一段Dictionary 初始化代码。
用法和map大同小异,有兴趣的可以去 每日五题02补充 看看。
Dictionary< string , string > hashMap = new Dictionary< string , string >();
9. 红黑树和avl树的区别,内存&效率
查询性能上:红黑树<avl树(但avl树在插入和删除时存在大量旋转操作,如果应用涉及频繁插入删除,还是选红黑树吧!)
内存:红黑树<avl树(同样因为avl树要存储平衡因子从而导致占用内存较高)
10. 快排的时间空间复杂度以及实现
快速排序是对冒泡排序的一种改进,
对快排时间复杂度讨论:最好O(n*logn) 最差O(n*n)
空间复杂度: 最好O(logn)最坏O(n)
下面用递归实现:
void Sort(int* array,int left,int right)
{
assert(array);
if(low >= high)//表示已经完成一个组
{
return;
}
int index = PartSort(array,low,high);//枢轴的位置
Sort(array,low,index - 1);
Sort(array,index + 1,high);
}
412

被折叠的 条评论
为什么被折叠?



