下面是我在学习C#时,写的一些心得,大家一起学习哈!
1、 对象=属性+行为
2、 事件(消息):向对象发出的服务请求;方法:对象能完成的服务的操作功能。用通俗的话来讲就是一个对象可以接收来自其他对象或者人的服务请求(成为事件),然后对象采取相应的方法(操作)去完成指定的功能。
3、 类是对象的一种抽象表达,是具有相同属性和行为的一组对象的集合;而对象是类的一个实例。用通俗的话来讲,交通工具就是一个类,其中的轿车,摩托车,自行车等等就是一个个具体的对象,他们具有的共同属性就是可以加速,停止,倒车等。
4、 抽象(abstraction):将具有一些相似属性和行为的事情归纳起来集中在一起。通俗来讲,具有社会行为的灵长类哺乳类动物称之为人(这就是一种抽象),但是其中有明星,有作家,有科学家,有政治家,也有普通老百姓等(这是进一步抽象)。
5、 封装(encapsulation):将对象有关的数据和操作代码封装在一个对象中形成基本单位,并且对外隐藏一些关键数据以防止被意外修改(信息隐藏)。通俗点讲:平板电脑的设计者必须知道如果架构起整个框架,电路板,屏幕,按键,处理器选择等。但是对于使用者来说,我们只关心重量,价格,颜色等(内部关键构造信息被隐藏)。
6、 继承:具有父类或者基类的所有属性和行为,并且在此基础上增加了一些新的属性和行为。通俗点讲,有点像是生物进化论中的遗传,父和母的所有属性遗传到了子的身上,并且子身上有自己新的属性和行为。
7、 多态(polymorphism):修改从基类继承来的属性或方法,使其具有一些新的行为(称为覆盖)。通俗点讲,就是在继承的基础上,有基因变异。。。而且是人为的。
8、 类的成员:常量、字段、属性、索引器、方法、事件、构造函数等
9、 定义了类之后,就可以用它来声明和定义对象:Book book2 = new Book();//new表示将book2对象实例化。在C语言中int a;集合了声明+定义。在C#中,声明和定义是分开的:Book book2是声明(没有分配存储空间),book2 = new Book()是定义(也叫做实例化)。(分配了存储空间)
10、 访问类成员时,如果是内部访问:this.xxx;如果是外部访问:对象名.xxx
11、 类的成员: 常量,publicconst double pi = 3.1415926;
字段,public double price;
属性,get{}只读,set{}可读可写。
12、 类的可访问性(只针对类外的可访问性,类成员之间不受限制):public,private,internal,protected.如果类的成员未指定访问修饰符,缺省为private。第一级类型(没有嵌套的类)的可访问性缺省为internal。
13、 数据类型有两种:值类型(value type)和引用类型(reference type)。通俗来讲,就是普通变量和指针。注意,也就是说,将一个对象赋值给另一个对象,后者得到的是前者对象的指针,不是一份copy。
14、 有了值类型和引用类型,就有了装箱与拆箱的术语。装箱就是把一个值类型的数据经过转化直接赋给对象;而拆箱相反,将对象类型数据转换为一个值类型数据给出。Eg: int a = 5;
Object box = a; //装箱,值类型à对象
Int b = (int)box; //拆箱,对象à值类型
15、 类的方法,缺省下可访问性是private。调用时,如果是在同一个类中调用则可直接调用;如果在不同的类中,如果是静态调用,直接通过类名调用即可,否则,必须通过创建类的一个实例,通过实例调用该方法。
16、 方法参数的传递也有值传递和按引用传递(指针),注意在按引用传递时,指针的关键字是ref。out关键用在如果实参不能确定,需要调用结束后才能知道,那么需要out
17、 创建数组 int[] a = new int[5]{1,2,3,4,5}(不允许部分初始化)。在传递数组参数时,可以传递数组名的形式,也可以采用数据列表形式,此时需要在形参列表的前面加上params关键字,调用形式m.MinParams(1,2,3,4,5,6,7);注意:只能修饰一维数组,必须为最后一个参数
18、 构造函数提供了一种为在建立对象时,进行一些初始化工作的方案。构造函数的名称必须与类名相同,并且没有返回类型。例如:public Book(string title, int price){this.title = title;this.price =price}
19、 静态成员属于类,不属于实例。用static关键字进行区别。
20、 静态类不能被实例化,他是密封的,因此不能被继承。
21、 Object类是最上层的一个基类,其他所有类都是直接或间接由Object类继承而来的
22、 派生类只能从一个类中继承,即单继承。并且派生类自然继承基类的成员,但不能继承基类的构造函数、私有成员、析构函数
23、 派生类的声明中,基类中的成员如果用protected表明该成员仅限于本身和派生类引用,如果用private表明该成员仅限于本身,如果用public表明其他类也可以引用。
24、 如果派生类准备调用构造函数,那么在基类中必须有构造函数,并且当调用构造函数时,系统默认的先调用基类中的构造函数,紧接着调用派生类的构造函数。
25、 类的多态性在定义时,需要用new关键字重新定义新的成员,并且变量名或者方法名要求一样。这样在调用时,会启用派生类新定义出来的方法。
26、 嵌套类的默认类型为private
27、 Namespace自定义命名空间,也可以嵌套。引用它用using xxx
28、 理解事件驱动模型。C语言采用的是过程驱动模型。
29、 委托相当于函数指针,声明public delegate int Calculate(int x,int y);实例化 Calculatea = new Calculate(Multiply);(Multiply为方法名)。使用委托:刚才的a为委托对象,a就是函数指针,直接调用a(3,6)就是调用Multiply函数,而3,6就是参数
30、 如果想多次使用一个委托对象来同时调用多个方法,可以采用”+=”运算符。比如:handler = new Calculate(math.Add);handler += new Calculate(math.Multiply);注意,结果只返回最后一种方法的返回值
31、 进程就是应用程序的一个实例。而线程是操作系统分配处理器时间的基本单元。一个进程可以包含一个或者多个线程,如果没有线程,那么该进程会被自动撤销。
32、 Linklabel可用于超文本链接按钮
33、 Lbltest.Text.Trim()从输入中移除前导空白和后面的Null
34、 TextBox(文本框),RichTextBox(RTF文本),Button(按钮),PictureBox(图片显示),ImageList(图片存储库),RadioButton(单选按钮),CheckBox(复选框),GroupBox(分组框),ListBox(列表框),ComboBox(组合框),TabControl(选项卡),MessageBox(消息框),ColorDialog(颜色对话框),FontDialog(字体对话框),
FontDialog fontdialog1 = new FontDialog();
if(fontdialog1.ShowDialog() == DialogResult.OK)
richTextBox1.Font = fontdialog1.Font;
MenuStrip(下拉菜单),ContextMenuStrip(上下文菜单),ToolStrip(工具栏),StatusStrip(状态栏)
35、 文件是静态的,流是动态的。
private void Save_btn_Click(objectsender, EventArgs e)
{
StreamWritersw = new StreamWriter("abs.txt", true); //true表示不覆盖
sw.WriteLine(DateTime.Now.ToString());
sw.WriteLine(Input.Text);
sw.Close();
}
private void Show_btn_Click(objectsender, EventArgs e)
{
StreamReadersr = new StreamReader("abs.txt");
Output.Text= sr.ReadToEnd();
sr.Close();
}
36、 Form.Show():非模式对话框,Form.ShowDialog():模式对话框。
37、 button1.Click += newEventHandler(myhander);左边是事件,右边是对应的处理函数指针