Class显示世界事物的模型

类是对现实世界事物进行抽象所得到的结果

事物包括“物质”与“运动”/“实体”与“逻辑” 建模是一个去伪存真、由表及里的过程

Class和对象的关系

何时称为“对象”、“实例”

对象也叫实例,是进过“实例化”后得到的内存中的实体
依照Class,我们可以创建对象,这就是实例化
使用“NEW”操作符创建类的实例

  1. using System
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows.forms;
  7. namespace ClassAnadlnstance
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. (new Form()).ShowDialog();
  14. }
  15. }
  16. }

引用变量和实例的关系

贯穿始终

  1. using System
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Windows.forms;
  7. namespace ClassAnadlnstance
  8. {
  9. class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. Form myForm;
  14. myForm = new myForm();
  15. myForm.Text = "MY FORM!";
  16. myForm.ShowDialog();
  17. /*
  18. new Form.text="MY FORM!";
  19. (new Form()).ShowDialog();
  20. 该情况下,输出显示的form任然没有标题,原因是因为两者使用的Form不是同一个对象
  21. */
  22. }
  23. }
  24. }

引用变量与实例的关系

同比于气球与孩子 n:0; 0:n; 1:1; B1:C1:C2:*Cn;

Class的三大成员

某些特殊Class或对象在成员方面侧重点不同

  • 模型Class或Object重在属性,如Entity Framework
  • 工具Class或Object重在方法,如Math,Console
  • 通知Class或Object重在事件,如各种Timer

    属性(Property)

    存储数据,组合起来表示类或对象当前的状态

    方法(Method)

    由C语言中的函数(function)进化而来,表示类或者对象“能做什么”
    工作中90%的时间是在与方法打交道,因为它是“真正做事”、“构成逻辑”的成员

    事件(Event)

    类或者对象通知其他类或对象的机制,为C#所特有(JAVA可用其他方法代替)
    善用事件机制非常重要

展示Class实例

  • 以属性为侧重的类 ```csharp using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

namespace PropretySample { class Program { static void Main(string[] args) { AdventureWorksLT2012Entities proxy = new AdventureWorksLT2012Entities(); foreach(Product p in proxy.products)//查找数据库中的product并打印输出 { Console.Writeline(p.name); } Console.writeline(proxy.Products.Count());//计算数据库中Products数量 } } }

  1. - [x] 以方法为侧重的类
  2. ```csharp
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace MethodSample
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. double x =Math.Pow(2,3);
  15. Console.writeline(x);
  16. }
  17. }
  18. }
  • 以事件为侧重的类 ```csharp using System.Windows.Navigation; using System.windows.Sharps; using System.windwos.Threading;//多线程

namespace EventSample { /// ///interaction logic for MainWindows.xaml /// public partial class Mainwindow:window { public MainWindow() { InitializeComponent(); DispatcherTimer = new DispatcherTimer(); timer.Interval=TimeSpan.FromSeconds(1);//时间间隔 timer.Tick += timer_tick;//事件触发函数。到+=双击Tab自动生成timer_Tick方法 timer.Start();//时间开始 }

  1. void timer_Tick(object sender,EventArgs e)
  2. {
  3. this.timeTextBox.Text=DateTime.Now.ToString();
  4. }
  5. }

}

简易的时间图表

  1. <a name="XKDl3"></a>
  2. # Class的静态成员/实例成员
  3. 静态成员(static)在语义上表示它是“类的成员”<br />实例成员(非静态)在语义上表示它是“对象的成员”
  4. ```csharp
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows.forms;
  11. namespace StaticSample
  12. {
  13. class Program
  14. {
  15. static void Main(string[] args)
  16. {
  17. Console.Writeline("hello");
  18. //静态成员
  19. Form form=new Form();
  20. form.text="Hello";
  21. form.ShowDialog();
  22. //实例成员
  23. }

关于“绑定”(Binging)

是指编译器将成员与Class或Object来联系起来
不可小觑的“.”操作符——成员访问操作符