原创 研一生活_我的C#笔记(一)

2014-2-24 21:13 982 3 3 分类: 软件与OS

 

1. 浮点类型主要包括float(单精度,精确到7位数)和double(双精度,精确到15或16位数),一般情况下,包含小数点的默认为double,要用float来处理的话,要强制使用F或f将其指定。
例:强制指定为float型:float m = 9.27f;  float b = 1.12F; 必须跟随f或F
    强制指定为double型:double m = 927d; double n = 112D;
2. F5调试运行程序
Ctrl+F5不调试运行程序
F11逐语句调试程序,单步
F10逐过程调试程序,一个函数为一步
3. Console.WriteLine(“  ”);输出显示;有自动换行
Console.Write(“  ”);输出显示后;没有自动换行,再输入就在该行后面输入
Console.ReadLine();读入一行数据,换行,为防止程序立刻退出而一般都加在所有WriteLine()结束末尾;返回的都为字符串string,所以有时就需要强制转换类型!
转换为整数:int.Parse()  double型:Convert.ToDouble()
4. 值类型:整数、浮点数、布尔数,在内存的栈中分配。必须赋值,不然有默认值。
引用类型:使用new关键字创建对象,存储在内存的堆中。堆:由系统弹性配置的内存空间,没有特定大小及存活时间,可以被弹性地运用于对象的访问。被赋值前为null
有object类型和string类型(当用到==或!=时,表示对象(而不是引用)的值。),以及所有的类(类class,接口interface,数组array,委托delegate)
5. 常量const  在类中申明后即使是类自身也是不能修改它的。一旦设置就不允许修改。
6. 静态变量static在程序加载时就分配了内存,整个程序运行完时才回收;局部变量在程序运行到时才分配,这个方法执行完时就回收;所以要尽可能少定义全局变量。
7. 隐式类型转换:低精度转化为高精度,所有情况,安全转换。
显式类型转换:强制类型转换,将高精度转化为低精度,会丢失部分数据。Convert关键字
8. 装箱:将值类型转换为引用类型的过程,隐式类型转换。将值类型变量的值复制到装箱得到的对象中之后,改变值类型变量的值,不会影响到装箱对象的值。
拆箱:显示类型转换,拆箱的时候要强制改变数据类型与原来的数据类型一样。
9. 移位运算:向左移N位数,便是原来的数乘以2的N次方,向右移为除以2的N次方。位数要看数据类型,左移舍弃高位,右移舍弃低位。>>右移 <<左移
10. New 创建对象、数组、代表。创建对象:后面跟()是必须的;
数组创建:string[ ] strTemp = new string[3];创建3个项目的string类型数组
11. 判断闰年:string runnian = ((yearnum % 400) == 0) || (((yearnum % 4) == 0) && ((yearnum % 100) != 0)) ? "是" : "不是";
12. 判断大小写字母和数字:自带的函数:1.判断大写字母:Char.IsUpper(c);2.判断小写字母:Char.IsLower(c);3.判断数字:Char.IsDigit(c);得出的值为bool值。
13. C#格式快捷键:Ctrl+K+D  CTRL + K, CTRL + C注释选择的代码 CTRL + K, CTRL + U取消对选择代码的注释 。C格式快捷键:alt+F8    MATLAB格式快捷键:CTRL+I  全部注释Ctrl+R  去掉注释Ctrl+T
14. Break语句将控制转到while语句的结束点,不再进行循环;而continue语句可用于将控制直接转到下一次循环,仍在循环。
15. a数组的长度 a.Length
16. 由于for嵌套语句将消耗很大的资源,能不使用就不使用。
17. 在循环互相嵌套时,break语句只应用于最里层的语句。不影响外层语句的运行。
18. 比较字符串compare,并非比较字符串的长度大小,而是比较字符串在英文字典中的位置,按字典排序的顺序,字母在前的单词小于后面的单词。
19. String类型定义的字符串,是不可以修改的,所做的修改实际是在计算机内存中生成新的字符串,用StringBuilder类型定义的字符串可以修改。需要大量修改字符串时可用。
20. 实例化:在面向对象的编程中,通常把用类创建对象的过程称为实例化,其格式如下:
类名 对象名 = new 类名(参数1,参数2...参数n);
如 Date date=new Date();就是用日期类创建了一个日期的对象,就叫对象的实例化。
多数语言中,实例化一个对象 就是为对象开辟内存空间,或者是不用声明,直接使用new 构造函数名(),建立一个临时对象。
21. 数组的声明:一维:type[ ] arrayName;  二维:type[ , ] arrayName;
例:int[ ] arr = new int[5]{1,2,3,4,5};  也可以:int[ ] arr = {1,2,3,4,5};此时根据初始数量来计算数组长度并创建数组。
Int[ , ] = new int[2,3];
Ps:定义数值型的数组时,默认值为0(整型、单精度型、双精度型),bool型默认为false,字符型默认为’\0’,字符串型数组默认为null
动态数组:例:
int m = 2;
int n =3;
int [ ] arr = new int[m,n];
22. Foreach语句用法:遍历 foreach(type n in array){ }寻找数组或ArrayList类中各个值的函数。n表示第n个数的值。只读,不能修改。不用确切知道具体的索引号,适合用于遍历数组。
23. 字符串结束标记’\0’。
24. ArrayList类,可动态地添加个删除元素,扩充了功能的数组,但并不等同于数组。使用时,需要在命名空间区域添加using System.Collections;
25. 类中析构方法~类名是自动被调用的,只能有一个析构方法。
26. 类:静态方法:属于类的本身,不属于对象,访问静态方法时只能使用类名,不能使用对象名来引用(不需要创建对象),因此引用this关键字是错误的。
非静态方法(实例方法):必须使用实例或对象来调用。可以使用this
Ps:方法是包含一系列语句的代码块。
27. 方法的重载:存在两个以上的同名方法,并且方法的参数类型、个数或者顺序不同。
28. 只读字段与常量的区别:一、只读字段可以在定义或者构造函数时赋值,它的值不能在编译时确定,而只能在运行时确定;常量只能在定义时赋值,而且常量的值在编译时已经确定,在程序中根本不能确定。二、只读字段的类型可以是任何类型,而常量的值在编译时只能是以下类型之一:sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal、bool、string或者枚举类型。
29. 属性存储数据:
【修饰符】【类型】【属性名】
{
get {get 访问体}  //可读
set {set 访问体}   //可写
}
属性与字段区别:属性不能直接访问数据,字段可以直接访问数据。在属性中可以添加对数据访问的限制,字段中就较难限制。
通常在访问状态时最好提供属性,而不是字段,因为属性可以更好地控制访问过程和读写权限。另外,属性的可访问性确定了什么代码可以访问这些成员,可以声明为公有、私有或者其他更为复杂的方式。
30. 索引器:比属性多了参数。
【修饰符】【类型】this[【参数列表】]
{
get {get 访问体}  //可读
set {set 访问体}   //可写
}
至少要有一个参数。只能是非静态的。
31. 类的多态性可以通过在子类(派生类)中重写基类的虚方法来实现的。继承、虚方法和重写方法组合在一起才能实现多态性。
Virtual不能与private,static,abstract和override同时使用。
Override不能与new,static或者Virtual同时使用。
32. Override:重写,重载。重写方法只能用于重写基类中的虚方法。
33. 定时器自己写时间函数与自己添加计时器控件的区别?线程上关于时间的计算有区别。
34. 模态窗体被打开,鼠标无法响应当前应用程序的其他窗体;非模态窗体就是普通的窗体,它的打开不会影响其他窗体的操作。
模态窗体:大小固定,属性选择FixedDialog,用ShowDialog方法。
非模态窗体:属性可以不设置成FixedDialog,用Show方法。
35. 包括控件的继承,要将控件的Modifiers属性设置为Public类型才能在继承之后修改。
36. 修改密码的显示方式可以设置PasswardChar为显示样式或者直接设置UseSystemPasswordChar为true。
37. RichTextBox空间显示滚动条:Multiline为true,若WordWrap(是否自动换行)属性设置为true时,不论ScrollBars属性的值是什么,都不会显示垂直滚动条。
38. 使用容器类空间Panel,可以先把它隐藏,然后在该容器上添加其他的控件,之类show该Panel,会将容器上其他控件显示出来。
39. 初始路径为桌面时可以用:Environment.SpecialFolder.Desktop
40. ImageList控件用来管理图像,可以直接将图像全部倒入该集合,再使用时直接去选择imagelist.Images即可。但首先得在Form1_load中取要加图片的控件的imagelist为该imagelist。
41. 如果想要将ImageList组件中的大图标显示在listView空间中的某个项目时,一般使用LargeImageList属性;如果要设置大图标,一般使用StateImageList属性进行设置。
42. 在BeforeCheck(在选中树节点复选框前发生)或AfterCheck(在选中树节点复选框后发生)事件中尽可能不要使用TreeNode.Checked属性。
43. 在用TreeView控件对各磁盘的文件进行显示时,可以通过该控件的SelctedNode的FullPath属性获取当前所选择节点(文件或文件夹)的目录,需要将该控件的PathSeparator属性值设为“\”。
44. 如果想要dateTimePicker1直接获取当前系统的日期和时间,可以用Value属性下的ToShortDateString和ToShortTimeString方法。
45. VS2010配置OPENCV小结:直接将下载的OPENCV解压即可。可以不用cmake。设置环境变量中的用户变量Path为build中bin,之后需要注销系统才能起作用。VS2010中在C++文件下属性管理器中有相应的win32.user选项设置C++项目dsw或dsp格式路径,分别为bin,include(三个),lib,具体可看以下链接,里面含有TBB选项,针对多核,暂时不用可不装。http://wenku.baidu.com/view/eaca65b8960590c69ec376e8.html。这个设置好后以后就可以不用设置。里面在文件右键属性里面的链接器设置需要每次都设置,包括(debug和release)。设置的包含的lib是core_cv244.lib之类,不是简单的cv.lib之类的。
46. 在配置VC++目录是都要勾选从父集或项目默认设置继承。否则会出现CR.exe或者Link.exe已退出,代码为5的情况。
47. 为防止出现在vs2010中找不到emgu.CV中的dll文件,在环境变量设置的path中直接设置到…bin\x86\。编辑非C#文件,要在文件的属性中添加附加值,如opencv_core240.dll等。
48. 新建C#的Win32窗体应用程序。然后,点击"项目"-〉"添加引用"-〉"浏览",然后把EmguCV1.3.0目录下的Emgu.CV.dll Emgu.Util.dll ZedGraph.dll zlib.net.dll 都添加到引用里面,其实也不用全部添加,不过由于我们不知道有些函数在那些dll中,所以索性全添加就可以了。然后,再程序的开头中加上 using Emgu.CV; using Emgu.Util; 之后就可以用EmguCV中所有的库函数了。
49. public extern static bool cvSaveImage(string filename, IntPtr image, IntPtr parameters);最后的IntPtr parameters参数是什么?
50. #ifdef…#else…#endif 如果有出现#define,则采用前一句ifdef的内容,没有就编译后一句else中的内容。采用条件编译,可以减少被编译的语句,从而减少目标的长度。当条件编译段比较多时,目标程序长度可以大大减少。因为只编译其中一句,不用全部都编译。
 
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条