文章导航PC6首页软件下载单机游戏安卓资源苹果资源

pc软件新闻网络操作系统办公工具编程服务器软件评测

安卓新闻资讯应用教程刷机教程安卓游戏攻略tv资讯深度阅读综合安卓评测

苹果ios资讯苹果手机越狱备份教程美化教程ios软件教程mac教程

单机游戏角色扮演即时战略动作射击棋牌游戏体育竞技模拟经营其它游戏游戏工具

网游cf活动dnf活动lol周免英雄lol礼包

手游最新动态手游评测手游活动新游预告手游问答

您的位置:首页技术开发ASP教程 → .Net边学边讲(二)

.Net边学边讲(二)

时间:2004/11/7 4:14:00来源:本站整理作者:蓝点我要评论(0)

我们继续来谈一谈类

与其他面向对象的编程语言不同,.Net中类有四个基本成员,data members(fields), function members(methods), properties, events。其他编程语言只有前两项。这里需注意,data members(fields)永远不要声明成public,因为这样会使使用者无需知道你的类就可以改变你的数据。

public class test{

private int i;

}

这里i 就是一个data members(fields),需要提及一点,properties提供了方便、安全的数据访问封装。下面来谈谈function members(methods),他有两种存在方式,instance和static。Instance隐含的接受了指向他所在的对象的指针,在C#中你可以用对象名或this得到。如:SomeObject.Method(), 或this.Method()。静态的(Static)Method不能接收到this指针。因此他们不能直接访问类里的任何实例化数据。他的调用方式是SomeClassName.StaticMethod()。他无需例示。function members(methods)默认是private的,即只能在声明他们的类中访问,我们需要声明他们为public以便可以在任何类中访问。function members(methods)可以被重载,也就是说你可以创建多个就有相同名字的方法,比如说test(int i), test(double i), test(), test(string i, bool b).....。.Net编译器会依据你传递的参数决定你在调用哪个方法。当然还有一些其它的修饰符如extern,他的用途是如果你想在.Net Framework中声明你的方法而在.Net Framework之外实现你的方法,比如说在C# 中声明你的方法而在windows本地dll中实现你的方法,你就要在C#中这样声明,public extern yourmethod(){}

接下来我们要谈谈Constructors和Finalize,每个类都至少有一个Constructor的方法,如果你没有提供,C#将自动为你生成一个没有任何参数的Constructor。Constructor是一个与你的类的名字相同且没有任何返回值的的方法。每个Constructor都会调用一个你基类的Constructor(如果没有显性的基类,就调用对象的),这个调用会在你的Constructor主体执行之前调用,这样,你就知道你的基类有没有正确的初始化了。Constructor只在每个对象被创建时调用一次,它的作用是初始化对象的实例,以便于调用。Destructors已不再需要,因为C#会自动提供一个清理对象的方法(叫Finalize)。垃圾自动清理,这也是C#的区别于其他编程语言的特性之一。接下来,我们该谈谈属性了。首先为什么要用属性?来看一个例子,如果你有一个类Person,有一个data members(fields)叫Age 是Int32型的被声明成public,(前面我们讲过不能声明成public,这里就是举例说明为什么不能):

Person Jim = new Person(); // create object; pointed to by Jim

Jim.Age = 23;

Int32 JimsAge = Jim.Age;

Jim.Age = -5; // invalid, but unchecked if you use a field

这段代码会造成两个问题

1.你的用户知道了内部数据的细节,他们可能会做一些你不希望发生的操作

2.你的用户可能会更改数据为一个不合法的值,如将Age设为零或负数

现在大家可以知道属性的优势了,相对应予上面提的

1.用户不会知道你的内部数据结构

2.属性方法会保护数据

下面的例程显示了属性的优越。

public class Person

{

Int32 age; // 注意默认是private

public Person(Int32 age) { // constructor

this.age = age; // this消除歧义!

}

public Int32 Age { // property

get {

return age;

}

set { // validating value

if (value > 0 && value < 150) {

age = value;

}

else { // throw exception if invalid value

throw new ArgumentException("Age must be between 1

and 150");

}

}

}

}

这段程序有几个值的关注的地方

1.在constructor中,我们定义了一个参数也叫age,这会与private age产生歧义。我们用this来消除歧义。

2.get方法用于读取属性set方法用于存取属性 。关键字value代表属性被设置的值

3.在set方法中我们检查了value的值,并在数据不合法时抛出了异常

有点打累了。。。:)

下次我们谈谈event






相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 《龙珠:超宇宙》 战斗E3 2014:瘆人僵尸《消 asp代码实现access数据导出到excel文件如何使用FSO读取Js文件内容并可以编辑修改对初学者有用的一些asp函数集学习ASP编程必会的代码

人气排行 asp代码实现access数据导出到excel文件asp不需要任何配置的伪静态实现如何使用FSO读取Js文件内容并可以编辑修改asp去除html标记和空格的代码Asp全选删除代码教大家网页伪静态知识及其2种实现方法Microsoft SQL Server 7.0安装问题(一)ASP.NET中的Code Behind技术4