您现在的位置是:首页 > 编程 > 

X#(XSharp)的重载

2025-07-27 20:16:38
X#(XSharp)的重载 重载是 OOP 编译时的多态性。但是,VFP 虽然号称是面向对象的编程语言,却缺乏这一特性。VFP 的 OOP 仅仅实现了封装和继承。举例来说,当你在 VFP 中创建一个自定义类时,类方法是不能重名的。也就是说,如果你在自定义类 AB 中有一个方法名是 test,它接收一个参数 a,那么,你就不能在 AB 中增加另一个方法名是 test,接收两个参数 a 和 b 的方法

X#(XSharp)的重载

重载是 OOP 编译时的多态性。但是,VFP 虽然号称是面向对象的编程语言,却缺乏这一特性。VFP 的 OOP 仅仅实现了封装和继承。

举例来说,当你在 VFP 中创建一个自定义类时,类方法是不能重名的。也就是说,如果你在自定义类 AB 中有一个方法名是 test,它接收一个参数 a,那么,你就不能在 AB 中增加另一个方法名是 test,接收两个参数 a 和 b 的方法。然后,你看到的就是 test、test1、test2......这样的自定义方法。

然后,在“不耽误挣钱”的商业思维基础之上,当你隔了天/月/年后,需要再次调用它时,你不得不再次查询源码来搞清楚 test/test1/test2...之间的区别。

有人会说,自定义方法也可以有方法描述来明确它们之间的区别啊。是的,这是一个方法。但是,既然具有了“不耽误挣钱”的思维模式,那么,很大程度上,是不知道该如何在 VFP IDE 中实现的......况且,VFP IDE 中的属性窗口中的“说明”部分,可能被无意关闭或者空间不足以完整呈现方法说明.....那是因为你的方法说明的字符长度超出了它的“范围”。

X#终结了这一切。

首先,X#是一门 .ET 语言(强类型);其次,它兼容 VFP 语法。

但是,在 X# 中使用重载,对于大多数 foxer 来说,还是有一点点障碍的。

在 VFP 中,方法定义的语法有两种。

第一种:

代码语言:javascript代码运行次数:0运行复制
PROCEDURE Procedureame 
   [ LPARAMETERS parameter1 [ ,parameter2 ] ,... ]
      Commands 
   [ RETUR [ eExpression ] ]
[EDPROC]

第二种:

代码语言:javascript代码运行次数:0运行复制
PROCEDURE Procedureame( [ parameter1 [ AS para1type ][ ,parameter2 
[AS para2type ] ] ,...] ) [ AS returntype ]
      Commands 
   [ RETUR [ eExpression ] ]
[EDPROC]

第一种是绝大多数 foxer 所熟知的,尽管你可能看不明白这个语法定义。但是,我从此刻起,建议 foxer 在使用时,尽可能的使用第二种语法定义。

你注意到两种语法定义的区别了吗?

在 VFP9 的帮助文件中,有这样一节:在 WITH ... EDWITH 命令和 FOR EACH ... EDFOR 命令中支持智能感应

其中,有这样一句描述:当用户输入 AS 关键字时,智能感应会显示登记在 FoxCode.dbf 数据表的 Type 字段值为 "T" 之类型清单。如果指定的是一个合法的类型,则在一个 WITH ... EDWITH 命令或 FOR EACH ... EDFOR 命令内输入一个句点时会显示对象参考的智能感应。

好吧。在我有限的 VFP 认知中,我只能认为 AS 关键字是为了让 VFP 的代码更像强类型语言,例如 C#,的语法,其在 VFP 中实际存在的意义仅仅是为了更好的使用智能感应(实际上,可能有很多使用所谓版VFP的,根本不知道“智能感应”是啥)。但是,从此刻起,请使用第二种语法。

当你习惯了第二种语法时,在使用 X# 时,才能一帆风顺的在其中实现“重载”。这并不是说,你在 VFP 中习惯第一种语法就不能在 X# 中实现重载,而是说,你会“自然而然”的认为,X# 对 VFP 的兼容度确实不错。

这其实在于 X# 中一个特定的概念:调用约定

简单的说,VFP中使用的是 CLIPPER 调用约定;而 X# 实现重载时使用的是 STRICT 约定。如果你不打算去查阅 X# 帮助来了解二者的差异,那么,就记住:在定义变量/函数返回值时使用 AS 关键字,实质就是使用了 STRICT 约定。无论你使用的是 VFP 还是 X#。

follow me,延续自己的技术生命!

本文参与 腾讯云自媒体同步曝光计划,分享自。原始发表:2025-01-05,如有侵权请联系 cloudcommunity@tencent 删除编程语言变量对象语法源码

#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/biancheng/1192750.html

相关标签:无
上传时间: 2025-07-23 01:18:58

上一篇:CAN vs. CANopen

下一篇:鸿蒙原生time

留言与评论(共有 9 条评论)
本站网友 微软windows7
27分钟前 发表
从此刻起
本站网友 苏州万科金色家园
30分钟前 发表
当你在 VFP 中创建一个自定义类时
本站网友 黄石别墅
13分钟前 发表
你不得不再次查询源码来搞清楚 test/test1/test2...之间的区别
本站网友 苏州买房
14分钟前 发表
但是
本站网友 已婚女人梦见自己怀孕
15分钟前 发表
需要再次调用它时
本站网友 郑州最好的男科医院
28分钟前 发表
你就不能在 AB 中增加另一个方法名是 test
本站网友 黄热病
26分钟前 发表
X# 对 VFP 的兼容度确实不错
本站网友 有效祛痘产品
29分钟前 发表
X#是一门 .ET 语言(强类型);其次