C#笔记

1:protected限定的是只有在继承的子类中才可以访问,可以跨程序集           internal限定的是只有在同一个程序集中才可以访问,可以跨类

2:out和ref之间的区别

首先:两者都是按地址传递的,使用后都将改变原来参数的数值。

其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。

3:C#动态生成控件以及添加事件处理(http://blog.sina.com.cn/s/blog_7e55412501011k0r.html)

4:当项目中有很多类型名称各不相同的控件时,可以将这些控件打上相同的标签。标签通常用来隐藏一些控件,使其在需要的时候显示。tag属性的使用,可以用来批量操作控件,十分方便。(http://blog.csdn.net/zmj_tata/article/details/42120417)

5:读取.xml格式的文件(http://www.cnblogs.com/netlzl/p/4343113.html),用到XMLTextReader 类。

6:私有成员,再设置公有函数,达到外部程序能够通过公有函数访问私有变量,get是只读,set是只写。

7:Button b = sender as Button;里面的as 相当于强制类型转换:Button b = (Button)sender;把object类型转换成button

但是两者的不同是,as在遇到不能转换的时候,返回null,而强制转换丢出异常,比如
int i = 1;
Button b = (Button)i; //丢出异常
Button b1 = i as Button; //不丢出异常,但是b1 = null 

8:Assembly,可以通过Assembly的信息来获取程序的类,实例等编程需要用到的信息

9:ShowDialog方法的调用会被阻塞,直到新窗体关闭,ShowDialog方法调用语句后面的代码才能得到执行。只有当建立的新窗口关闭之后,原有窗体才能重新获得控制权。即如果不关闭新窗口,将无法对原活动窗 口进行任何操作。(http://www.cnblogs.com/hongmaju/p/3623437.html)

10:通过使用控件的SuspendLayout方法,可以将控件的布局暂时挂起,其后的代码中将会把子控件的Layout事件暂时挂起,只是把相应属性的值设置为新值,并不激发Layout事件,待调用ResumeLayout方法后,再一起使子控件的Layout事件生效。当需要立即执行布局事件时,可以直接调用PerformLayout方法。(http://www.cnblogs.com/si-shaohua/archive/2011/12/21/2296129.html)

11:DllImport是System.Runtime.InteropServices命名空间下的一个属性类,其功能是提供从非托管DLL导出的函数的必要调用信息。

DllImport会按照顺序自动去寻找的地方:(http://www.cnblogs.com/Fooo/p/6410975.html)1、exe所在目录2、System32目录3、环境变量目录

12:StringBuilder   对象是动态对象,允许扩充它所封装的字符串中字符的数量,其中AppendLine比Append多了一个换行符(http://www.cnblogs.com/tonysuen/archive/2010/03/04/1678447.html)(https://zhidao.baidu.com/question/413551192.html)

13:(BinaryWriter)当向文件中写入非字符类型的数据时,StreamWriter和BinaryWriter存在巨大差异。(http://www.cnblogs.com/ybwang/archive/2010/06/12/1757409.html)

StreamWriter是把各种类型的数据都转化成字符,然后把字符按照一定的格式编码出来的数据写入文件中。

BinaryWriter是直接把数据在内存中的真实状态写入到文件中。

14:System.Security.Cryptography主要是提供数据编辑或解密、各种加密法的数据加密功能。(例子,http://www.codefans.net/articles/458.shtml)

15:Encoding用法比较简单,如果只是字节和字符的互相转换,GetBytes()和GetChars()这两个方法及它们的重载基本上会满足你所有要求。(http://www.cnblogs.com/criedshy/archive/2012/08/07/2626415.html)

16:(Marshal.StringToCoTaskMemAnsi)将托管 String 的内容复制到从非托管 COM 任务分配器分配的内存块(https://msdn.microsoft.com/zh-cn/library/7z99x557(v=vs.100).aspx)

17:(Delegate中文翻译为“委托”)C#中的委托类似于C或C++中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象、类型安全的,并且是安全的。见例34详细

delegate和event经常一起使用,因为:声明事件:若要在类内声明事件,首先必须声明该事件的委托类型。

(http://www.cnblogs.com/hyddd/archive/2009/07/26/1531538.html)

18:(Regex.IsMatch())C#正则验证大全 Regex.IsMatch()正则表达式验证,用来验证各种情况,如是否是数字(http://www.cnblogs.com/summers/archive/2013/05/23/3094365.html)

 19:DataConnectionDialog 类: 打开“数据连接”对话框,在运行时设置数据源连接字符串,获取用户选择的数据连接信息。命名空间为:Microsoft.Data.ConnectionUI。http://www.cnblogs.com/Interkey/p/DataConnectionDialog.html

20:File.WriteAllText (String, String),创建一个新文件,在其中写入指定的字符串数组,然后关闭该文件。如果目标文件已存在,则改写该文件。

21:using的三种用法。1,using指令。using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间;2.using别名。using + 别名 = 包括详细命名空间信息的具体的类型。3.using语句,定义一个范围,在范围结束时处理对象,dispose掉。 http://www.cnblogs.com/fashui/archive/2011/09/29/2195061.html

22:try...catch 用来处理异常的发生http://blog.csdn.net/ls1645/article/details/50528789

23:Winform窗口创建的项目的主程序program里面的三行代码解释:http://realzjy.blog.51cto.com/818594/975562/

24:实例化SqlParameter时,是否需要设置参数的大小  http://bbs.csdn.net/topics/380155255

25:c#中dictionary字典的用法。http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionary.html

26:parameterDirection 确定后是否还需要设置默认值,http://blog.163.com/shensc@126/blog/static/131289652201071192737537/

27:var关键字的使用,var可以代替任何变量。http://www.jianshu.com/p/45818368e887

28:模态窗口和非模态窗口的打开与关闭。http://www.cnblogs.com/yieryi/archive/2015/07/02/4616610.html

29:C#中的问号运算符分为三种功能:单问号作为条件判断的三元运算符;单问号做为基本数据类型声明变量的标识符;双问号做为条件判断的运算符。http://www.cnblogs.com/zhhh/archive/2010/11/25/1880590.html

30:remove函数和replace函数用法:http://www.cnblogs.com/multiplesoftware/archive/2011/09/27/2192710.html

31:错误提示控件errorProvider 。http://www.cnblogs.com/suguoqiang/archive/2012/07/17/2596564.html

32:contextmenustrip控件的使用。http://blog.sina.com.cn/s/blog_996599e50101anni.html

33:try;catch;finally;return四个的执行顺序。http://blog.csdn.net/kavensu/article/details/8067850

34:委托和事件(很详细):http://www.cnblogs.com/a1656344531/archive/2012/10/12/2721881.html

35:数组,ArrayList和List的区别。http://www.cnblogs.com/zhangxl/p/4437201.html

36:AES ,SHA1,DES,RSA,MD5加密的区别:http://blog.csdn.net/hengshujiyi/article/details/45972533

37:math.round,math.ceiling,math.floor用法:http://www.mzwu.com/article.asp?id=3447

38:Assembly.Load("程序集名称").CreateInstance("命名空间.类名",bool ignoreCase, BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes );其中Object[] args传入引用类名所需的参数;https://msdn.microsoft.com/zh-cn/library/ck6xe688(VS.80).aspx;http://www.cnblogs.com/wcp066/archive/2008/09/05/1284948.html

39:使用SendKeys.Send发送Tab键代替SelectNextControl()方法:http://www.csframework.com/archive/9/arc-9-20141230-2169.htm

40:在一段字符串中查找第二个字符时,以第一个字符索引作为开始索引:https://zhidao.baidu.com/question/87892894.html

原文地址:https://www.cnblogs.com/xiaoxue126/p/7073964.html