Class显示世界事物的模型
类是对现实世界事物进行抽象所得到的结果
事物包括“物质”与“运动”/“实体”与“逻辑” 建模是一个去伪存真、由表及里的过程
Class和对象的关系
何时称为“对象”、“实例”
对象也叫实例,是进过“实例化”后得到的内存中的实体
依照Class,我们可以创建对象,这就是实例化
使用“NEW”操作符创建类的实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.forms;
namespace ClassAnadlnstance
{
class Program
{
static void Main(string[] args)
{
(new Form()).ShowDialog();
}
}
}
引用变量和实例的关系
贯穿始终
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.forms;
namespace ClassAnadlnstance
{
class Program
{
static void Main(string[] args)
{
Form myForm;
myForm = new myForm();
myForm.Text = "MY FORM!";
myForm.ShowDialog();
/*
new Form.text="MY FORM!";
(new Form()).ShowDialog();
该情况下,输出显示的form任然没有标题,原因是因为两者使用的Form不是同一个对象
*/
}
}
}
引用变量与实例的关系
同比于气球与孩子 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数量 } } }
- [x] 以方法为侧重的类
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MethodSample
{
class Program
{
static void Main(string[] args)
{
double x =Math.Pow(2,3);
Console.writeline(x);
}
}
}
- 以事件为侧重的类 ```csharp using System.Windows.Navigation; using System.windows.Sharps; using System.windwos.Threading;//多线程
namespace EventSample
{
///
void timer_Tick(object sender,EventArgs e)
{
this.timeTextBox.Text=DateTime.Now.ToString();
}
}
}
简易的时间图表
<a name="XKDl3"></a>
# Class的静态成员/实例成员
静态成员(static)在语义上表示它是“类的成员”<br />实例成员(非静态)在语义上表示它是“对象的成员”
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.forms;
namespace StaticSample
{
class Program
{
static void Main(string[] args)
{
Console.Writeline("hello");
//静态成员
Form form=new Form();
form.text="Hello";
form.ShowDialog();
//实例成员
}
关于“绑定”(Binging)
是指编译器将成员与Class或Object来联系起来
不可小觑的“.”操作符——成员访问操作符