C# 知识点集合
1.一个Visual studio软件进程只能打开一个程序集,但是一个程序集可以加载多个项目,通过程序集的添加功能可以实现。
2.F11单步调试,F10跨程序调试(一般用不到)
3.VS如何快速的切换到行尾写;号? ---有时可以使用tab,有时可以使用shift+;键
4.VS中的快捷键,Ctrl+G按照指定行号跳行,Ctrl+A,Ctrl+K,Ctrl+F跳行,F7查看当前winform程序的后台代码,“Shift+ F11”执行当前执行点所处函数的剩余行,“Shift
+ F5”停止运行程序中的当前应用程序。可用于“中断”模式和“运行”模式(这两个调试的时候才经常使用吧,现在感觉没什么用)。
5.字符串= 整型+字符串,这里面存在一个隐式转换,这样写是可行的
6..winforms中控件的反复添加或者删除不会影响性能,如果先删除后台代码,前端出现错误,那么可以通过转到代码处来删除引用来实现完全删除。
7.string.empty 和空字符串有什么区别?答:一样的,string s = string.Empty = "" = null ;
8.一个程序集只有一个命名空间,这个命名空间就是这个程序集下所有程序共享的那个命名空间
9.internal指的是在命名空间内共享,class默认是internal修饰的
10.private 私有构造函数只能在类中使用,在外面无法使用,初始化的时候无法用
11.很少使用代码使用析构函数,但是像数据库连接这种处理,要是不处理掉,是永远不会自动被GAC回收的,所以需要析构函数来处理
12.string.format()是项目中常用的,一般不适用+来链接字符串,那是偷懒的写法
13.a1是变量,string字符串的输出可以这样写$"这次要输出的字符串{a1}"
14.静态构造函数(创建成员或使用静态函数、变量的时候,都会调用静态函数)、普通构造函数(NEW的时候才调用),数据库连接的时候使用,创建一次反复使用,创建时消耗资源的,这样提升了性能,相当于一次性筷子,用一次就好了
15.EventHandler S里面的EventHandler表示一个接口,S表示一个继承了这个接口的类;对类来说也是的,不管是值类型、引用类型,包括抽象类,new才代表实例化,string
s,object o这种仅代表声明,不代表实例化,所以抽象类可以用 Expression left这种声明方式来表示:Expression的子类可以将left替换;
16.匿名方法必须写delegate,不写的话就是lambda表达式了
17.表达式树的作用就是跨编译器传输,linq TO SQL SERVER或者linq to EF上可能用的到,大部分人一辈子都不用到
18. Speak s= new Speak(j.ss); 其中j.ss是j对象ss方法,委托的初始化必须加入一个函数才可以
19.对象的初始化必须加()括号 对象名 j = new 对象名();
20.winform事件默认调用EventHandler委托,这个有两个参数objecjt 和EventArgs,所以所有winform事件都是这两个参数
21.迭代器的用法 yield return(返回的是枚举元素) 和yield break,迭代器是通过编译器的一层额外处理,来简化创建可用于foreach的枚举集合工作,迭代器使我们更加方便的写出可用于foreach循环的枚举集合。我觉得有个模型来理解必须用这个就好了,现在还没找到,无法理解IEnumerator,IEnumerable<T>的用法
22.object实际应该叫做东西,不应该叫做对象
23..function翻译为函数,但是在英文中的涵义是功能,面向过程的语言强调的是功能,不是强调的是过程,面向过程其实强调的是面向功能
24.class描述抽象事物的类型,不再强调功能,强调的是归类,泛泛的东西是类,具体的东西就是对象
25.常数:表示与该类相关联的常数值
26.字段:该类的变量
27.方法,行为,用于实现可由该类执行的计算和操作
28.属性:用于定义一些命名特性,通过它来读取和写入相关的数据
29.事件:用于定义可由该类生成的通知----这个以后改一下,觉得这个定义不怎么好理解
30.索引器:使该类的实例可按与数组相同的方式进行索引
31.运算符:用于定义表达式的运算符,通过对实例进行运算
32.实例构造函数:用于规定在初始化该类的实例时
33.
[] 是针对 特定类型、固定长度的。
List 是针对 特定类型、任意长度的。
Array 是针对 任意类型、固定长度的。
ArrayList 是针对 任意类型、任意长度的。
34.匿名类型的数据是readonly的,不能修改,这些数据值临时使用的,可以看作是装载数据的容器
35.MessageBox.show("this is a test",MessageBoxButtons.ok,MessageBoxIcon.Hand)
36.WINFORM中的简写
LABLE LBL
BUTTON BTN
FORM FRM
37.NULL的值是打印不出来的,比如在例子public static readonly 类名A Empty;,Empty只能是A的类或子类,但static的值无法继承或复制,所以Empty就是NULL,且无法修改
38. Array 的命名空间是 System
Array array = Array.CreateInstance(System.Type.GetType("System.Int32"), 3); // Array 是抽象类,不能使用 new Array 创建。
array.SetValue(1, 0);
array.SetValue(2, 1);
array.SetValue(3, 2);
39.VB的语法和C#出入比较大,没有特殊的需要的话,学一门就可以干活了
40.属性SET、GET上的访问修饰符默认是跟属性前面的修饰符一样,如果非要在get或者set上加访问修饰符,就要比前面的属性上的访问修饰符“小”
41.VS中的链接SQL SERVER是干嘛用的?
但是这个功能是面向软件架构师的,对你这样还在学SQL语句的初学者来说是没有什么用。甚至对于资深的数据库管理员来说,除非他们在和软件架构师合作设计数据库,否则仍旧是没有什么用
第二阵营是sublime,为Emacs/Vim提供了很多未来的高手,也带来了很多插件创意(比如git-gutter)
第三阵营,其他编辑器,对vim/emacs基本无贡献,某些人会最终转到sublime,然后鄙视原来的编辑器,结束了
45.C#中使用zipfile关键字的时候,需要在头问价和引用中分别添加引用文件;
46.哈希表这种数据结构似乎无法存储图片的
47.静态方法中没法访问实例变量,而在实例方法中可以(还可以使用关键字this)
48.子类重载父类构造函数base关键字,既可以参数少的重载参数多的,又可以参数多的重载参数少的
49.public static Student operator -(Student s1, Student s2) ,operator这个操作符只能用在Student这个class类中被操作使用
50.结构继承自system.ValueType,类继承自system.Object,区别如下:
结构
- 没有默认的构造函数,但是可以添加构造函数
- 没有析构函数
- 没有 abstract 和 sealed(因为不能继承)
- 不能有 protected 修饰符
- 可以不使用 new 初始化
- 在结构中不能实例化字段,
- 结构中的属性默认是private,跟类一样
类
- 有默认的构造函数
- 有析构函数
- 可以使用 abstract 和 sealed
- 有 protected 修饰符
- 必须使用 new 初始化
51.虚方法可以任何类中声明,没有限制
52.
System.Collections.IDictionaryEnumerator d = ht.GetEnumerator();
while (d.MoveNext())
{
Console.WriteLine("key:{0} value:{1}", d.Entry.Key, d.Entry.Value);
}
看了这个方法就一下子理解了IEnumerator类型和GetEnumerator方法的用法
53.字典里键值对一把比较复杂的用法,字典的值类型还是一个数组
Dictionary<Tkey,Tvalue>是Hastbale的泛型实现。
Dictionary和HashTable内部实现差不多,但前者无需装箱拆箱操作,效率略高一点。
54.protected IList List { get; },这句话在collectionBase的定义中,通过ILspy反射看到List返回的是this对象,那么访问List返回的就是一个类对象本身,这个对象本身有继承了IList接口,IEnumerable接口,所以他具有集合的特性,可以对它使用索引器this[int index]
foreach (KeyValuePair<string, string> kvp in myDictionary) { string key = kvp.Key;//key包含了字典里的键 for (int i = ; i < kvp.Value.Count; i++) { Response.Write(kvp.Value[i]); } }
55.object()函数比较对象的状态,如果一个对象的每个属性值都与另一个对象属性值相同,比较结果就是true,但是==比较的是引用,若两个对象的引用来自同一个对象,那么才返回true
56.throw会抛出一个异常,外层的catch语句会根据catch的参数类型对throw抛出的异常进行匹配,如果成功,就在响应的catch块内得到处理,什么都不抛,那就什么都不做。
57.streamwriter的flush关闭缓存区有什么用吗?用代码实现看看区别 public string age和public string age{set;get;}有什么区别吗? Lambda表达式和lambda语句有什么区别? IEnumerable 和 IEnumerator 有什么区别? 如何实现GetNumerator方法? 什么时候用var qq = from c in d where xxx select new {}; 什么时候用var qq = d.where().select()
58.接口是否可以继承接口?抽象类是否可以实现接口?抽象类是否可以继承实体类? 答:接口是可以继承接口的,抽象类是可以实现接口的,抽象类可以继承实体类,但是有个条件,条件是,实体类必须要有明确的构造函数,没有也无所谓,编辑器会默认生成一个无参的构造函数。
59.Collection和Collections的区别? 答:Collection是集合类的上级接口,Collections是针对集合类的一个帮助类,它提供一系列静态方法来实现对各种集合的搜索,排序,线程安全化操作。
最新文章
- JNI输出log信息
- 怎么看网站是否开启CDN加速?测试网站全国访问速度方法详解
- 【Beta阶段】团队源代码管理
- 黄聪:HtmlAgilityPack,C#实用的HTML解析类简介
- bootstrap table 服务器端分页例子
- Reactor模式,或者叫反应器模式
- Agile.Net 组件式开发平台 - 开发环境部署
- shell排序算法
- Strange Way to Express Integers (一般模线性方程组)
- 瑞星杀毒软件、奇虎360杀毒软件、360卫士、百度卫士联手,搞不定弹出广告 &;amp; 恶意广告图标
- Modelbuilder快速入门
- 应邀ITGeGe在线教育社区嵌入式基础开发讲师
- ES7 Async/Await 陷阱
- 2017软工实践K班总结
- 虚拟机连不上网 Xshell连不上虚拟机
- SecureCRT显示乱码的解决办法
- Jmeter之Bean shell使用
- cocos进阶教程(5)各种动画使用心得
- Django重定向的写法、与直接渲染的区别
- 以上过程为实现equals的标准过程