Modern C#系列课程(2):类, 组和名称空间
2008-06-02 22:33
197 查看
================================================================
类的介绍
================================================================
1.为什么使用 object-oriented programming?
---封装性、继承和多态
---现实世界中就是对象无处不在
2.类(Classes)
---类定义了一个“模板”,通过这个“模板”可以生成一个或多个对象
---类定义了一个对象的“状态”和“行为”
3.类的成员
在最简单的设计中,我们定义两种类的成员:
---属性:用于描述“状态”,保持“状态”
---方法:用于定义行为
4.实例化(Instantiation)
---实例化就是创建对象的过程
---使用new关键字来创建
补充:实例化的几种方式【重点】
1.Test mytest = new Test();
2.FileStream fs = File.Create(“data.inp”);
---没有可访问的构造函数,Create方法返回类实例的一个引用。
---常见的是sington模式。
3.使用反射(Reflection)
public class ReflectTest
{
public ReflectTest() { }
}
//Get the Type object for the ReflectTest.class
Type t = Type.GetType(“ReflectTest”)
//Get the parameterless constructor for the class
ConstructorInfo ctor = t.GetConstructor(System.Type.EmptyTypes);
//Invoke the constructor with a ‘null’ parameter
ReflectTest test = (ReflectTest)
ctor.Invoke(null);
================================================================
静态成员与实例成员
================================================================
1.对象 vs对象引用
对象变量保存的仅仅是对象的一个引用,不是对象本身!
这点是非常重要的!有助于理解.NET
2.何时OOP不再是OOP?
有些设计是和OOP相违背的
---全局变量
---全局方法
---常量
3.静态(static)类成员
静态(static)中的成员不属于任何对象
---它可以通过类名直接访问
---实例成员必须通过建立对象的引用来访问
---const申明的其实相当于静态成员,常量是隐式的静态成员;也可以用static声明。
---所有类的实例共享这个类的静态成员变量。
4.何时来使用static
---常量
---类实例的公共变量
---static可以修饰类,这样类的所有方法和字段都是static的,这也可以减少编写的代码,不需要重复写static。
补充:只读字段与常量字段【重点】
public static readonly double Price = 3.72
只读字段只能一次赋值,赋值之后不能改变,但是赋值的机会很多。
区别:
---静态方面 //只读字段: ;常量字段:
---初始化方面 //只读字段:声明,类的构造函数,或者根本就没有赋值 ;常量字段:声明的时候
---类型方面 //只读字段: 值类型和引用类型;常量字段:值类型
================================================================
名称空间
================================================================
1.名称空间可以按逻辑对类进行划分
---增强可读性( System.Windows.Forms.Form)
---减少了类名的冲突(my classes &your classes)//如不同人开发相同的类
2.完全引用方式
从名称空间的最外层完全引用
---优势 //唯一的应用
---劣势 //重复代码多TeamX.BusinessTier.Customer c;
c = new TeamX.BusinessTier.Customer(...);
3.导入(importing)
你可以导入名称空间
---使用using关键字在文件的顶部导入要使用的名称空间using TeamX.BusinessTier;
Customer c;
c = new Customer(...);
问题:如果引入命名空间中存在相同的类时,全局方式就不能正常,为此我们可以使用折中方案。
4.导入“别名”(alias)
过度使用using将带来问题
---干扰可读性 //不知道来源
---增加名称冲突的可能性
使用alias是一种折中的方式,可以减少代码编写,也可以避免命名控件中类的重复。举例如下:
using BT = TeamX.BusinessTier;
BT.Customer c;
c = new BT.Customer(...);
================================================================
组件(assembly)
================================================================
1.组件介绍
---A component == 1 or more classes
---在.NET中,组件被称为程序集(assembly)
---【组件和存放的物理位置有关,跟名称空间无直接关系】---和java中的package是不同的,它没有像java那样类的文件夹层次结构。
2.引用方式
你有两种选择
1) 打开DLL项目
2) 直接引用DLL
3.设置DLL引用
---浏览 DLL 引用【.NET选项卡里面,选择"Browre..."】
---VS 复制 DLL
---如果DLL更新了,重新复制
优势?
---解决方案中项目量减少,VS运行较快
劣势?
---你必须手工编译每个DLL项目
---调试较麻烦,因为它们不在一个解决方案中…
类的介绍
================================================================
1.为什么使用 object-oriented programming?
---封装性、继承和多态
---现实世界中就是对象无处不在
2.类(Classes)
---类定义了一个“模板”,通过这个“模板”可以生成一个或多个对象
---类定义了一个对象的“状态”和“行为”
3.类的成员
在最简单的设计中,我们定义两种类的成员:
---属性:用于描述“状态”,保持“状态”
---方法:用于定义行为
4.实例化(Instantiation)
---实例化就是创建对象的过程
---使用new关键字来创建
补充:实例化的几种方式【重点】
1.Test mytest = new Test();
2.FileStream fs = File.Create(“data.inp”);
---没有可访问的构造函数,Create方法返回类实例的一个引用。
---常见的是sington模式。
3.使用反射(Reflection)
public class ReflectTest
{
public ReflectTest() { }
}
//Get the Type object for the ReflectTest.class
Type t = Type.GetType(“ReflectTest”)
//Get the parameterless constructor for the class
ConstructorInfo ctor = t.GetConstructor(System.Type.EmptyTypes);
//Invoke the constructor with a ‘null’ parameter
ReflectTest test = (ReflectTest)
ctor.Invoke(null);
================================================================
静态成员与实例成员
================================================================
1.对象 vs对象引用
对象变量保存的仅仅是对象的一个引用,不是对象本身!
这点是非常重要的!有助于理解.NET
2.何时OOP不再是OOP?
有些设计是和OOP相违背的
---全局变量
---全局方法
---常量
3.静态(static)类成员
静态(static)中的成员不属于任何对象
---它可以通过类名直接访问
---实例成员必须通过建立对象的引用来访问
---const申明的其实相当于静态成员,常量是隐式的静态成员;也可以用static声明。
---所有类的实例共享这个类的静态成员变量。
4.何时来使用static
---常量
---类实例的公共变量
---static可以修饰类,这样类的所有方法和字段都是static的,这也可以减少编写的代码,不需要重复写static。
补充:只读字段与常量字段【重点】
public static readonly double Price = 3.72
只读字段只能一次赋值,赋值之后不能改变,但是赋值的机会很多。
区别:
---静态方面 //只读字段: ;常量字段:
---初始化方面 //只读字段:声明,类的构造函数,或者根本就没有赋值 ;常量字段:声明的时候
---类型方面 //只读字段: 值类型和引用类型;常量字段:值类型
================================================================
名称空间
================================================================
1.名称空间可以按逻辑对类进行划分
---增强可读性( System.Windows.Forms.Form)
---减少了类名的冲突(my classes &your classes)//如不同人开发相同的类
2.完全引用方式
从名称空间的最外层完全引用
---优势 //唯一的应用
---劣势 //重复代码多TeamX.BusinessTier.Customer c;
c = new TeamX.BusinessTier.Customer(...);
3.导入(importing)
你可以导入名称空间
---使用using关键字在文件的顶部导入要使用的名称空间using TeamX.BusinessTier;
Customer c;
c = new Customer(...);
问题:如果引入命名空间中存在相同的类时,全局方式就不能正常,为此我们可以使用折中方案。
4.导入“别名”(alias)
过度使用using将带来问题
---干扰可读性 //不知道来源
---增加名称冲突的可能性
使用alias是一种折中的方式,可以减少代码编写,也可以避免命名控件中类的重复。举例如下:
using BT = TeamX.BusinessTier;
BT.Customer c;
c = new BT.Customer(...);
================================================================
组件(assembly)
================================================================
1.组件介绍
---A component == 1 or more classes
---在.NET中,组件被称为程序集(assembly)
---【组件和存放的物理位置有关,跟名称空间无直接关系】---和java中的package是不同的,它没有像java那样类的文件夹层次结构。
2.引用方式
你有两种选择
1) 打开DLL项目
2) 直接引用DLL
3.设置DLL引用
---浏览 DLL 引用【.NET选项卡里面,选择"Browre..."】
---VS 复制 DLL
---如果DLL更新了,重新复制
优势?
---解决方案中项目量减少,VS运行较快
劣势?
---你必须手工编译每个DLL项目
---调试较麻烦,因为它们不在一个解决方案中…
相关文章推荐
- Modern C#系列课程(1):应用程序的执行
- Modern C# 系列课程笔记 第9节 基于组件的程序设计
- 无废话WPF系列4: x名称空间
- 一步一个脚印学习WCF系列之WCF基础术语—契约的名称与命名空间(二)
- C++ Primer知识系列四:内存模型和名称空间
- Java模板引擎FreeMarker系列之八FreeMarker模板包含及名称空间
- 50个查询系列-第8个查询:查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;
- AD&Exchange 部署实战系列课程 正式上线了
- 手把手玩转win8开发系列课程(28)
- [大数据新手上路]“零基础”系列课程--如何将ECS上的Hadoop数据迁移到阿里云数加·MaxCompute
- Oracle基础:表空间名称大小写问题
- WPF学习笔记(3)——x名称空间详解 中
- 【超清视频】SCCM2012精讲系列课程04:SCCM2012的基础环境初始化(二)
- Visual Studio 2008开发新特性系列课程(6):VS2008新特性之AJAX介绍
- 深度学习DeepLearning.ai系列课程学习总结:6. 具有一个隐藏层的平面数据分类代码实战
- Visual Studio 2008开发新特性系列课程(8):VSTO in Visual Studio 2008
- [js高手之路]设计模式系列课程-委托模式实战微博发布功能
- VS C# 命名空间 “ ”中不存在类型或命名空间名称 “ ” 。是否缺少程序集引用?
- SQL Server自动化运维系列——监控磁盘剩余空间及SQL Server错误日志(Power Shell)
- 大数据系列修炼-Scala课程03