社区
Delphi
帖子详情
如何把一个类型作为参数进行传递?
niniu
2003-09-24 03:21:26
如何把一个类型作为参数进行传递?
想了很久没想明白
...全文
224
9
打赏
收藏
如何把一个类型作为参数进行传递?
如何把一个类型作为参数进行传递? 想了很久没想明白
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qiume
2003-09-24
打赏
举报
回复
建议看Delphi的help
hiflower
2003-09-24
打赏
举报
回复
说得很清楚了,结吧
jacky_shen
2003-09-24
打赏
举报
回复
类引用
有时类的操作作用于其自身,这不同于作用于类的实例(即对象)。例如,当用类引用调用构造器方法时。对于这样的情况,总是可以明确指定要用的类的名称,但有时必需声明变量或参数把类作为值处理,并且这种情况下需要类引用类型(class-reference types)。
类引用类型
类引用类型有时叫做元类(metaclass),表示类引用类型的结构具有如下形式
class of type
这里的type是任何类类型。标识符type自身表示一个值,它的类型是type类。如果type1是type2的祖先,那么type2的类与type1的类是赋值兼容的。因此,
type TClass = class of TObject;
var AnyObj: TClass;
这里声明一个叫做AnyObj的变量,用于可以保存对任何类的引用。(类引用类型的定义不能直接出现在变量声明或参数列表声明中。)可以把值nil赋给任何类引用类型的变量。
要明白类引用类型是如何被使用的,可以查看TCollection(Classes单元中)的构造器声明:
type TCollectionItemClass = class of TCollectionItem;
...
constructor Create(ItemClass: TCollectionItemClass);
这里的声明表明,要创建TCollection的实例对象,就必需向构造器传递TCollectionItem类或自该类派生的类的名称。
编译时,想要调用类或对象的类方法或者虚拟的构造器,而不知道其实际类型时,类引用类型是有用的。
构造器和类引用
构造器可以被类引用类型的变量调用。这就允许在编译时构造类型未知的对象。例如,
type TControlClass = class of TControl;
function CreateControl(ControlClass: TControlClass;
const ControlName: string; X, Y, W, H: Integer): TControl;
begin
Result := ControlClass.Create(MainForm);
with Result do
begin
Parent := MainForm;
Name := ControlName;
SetBounds(X, Y, W, H);
Visible := True;
end;
end;
上面的例子中,CreateControl函数需要一个类引用类型告诉它何种控件被创建。该函数用这一参数调用类的构造器。因为类类型标识符表示类引用的值,所以对CreateControl调用可以指定类的标识符以创建相应的对象。例如,
CreateControl(TEdit, 'Edit1', 10, 10, 100, 20);
用类引用调用的构造器通常是虚拟的。运行时类引用的类型决定了构造器在调用时的具体实现。
SarahCla
2003-09-24
打赏
举报
回复
用TObject类型传递
在函数中通过判断传进来的类型的类名,例如:
function LoadData(Sender:TObject);
begin
if Sender=Edit2 then
TEdit(Sender).Text:='hehe';
......
End;
SarahCla
2003-09-24
打赏
举报
回复
用TObject类型传递
在函数中通过判断传进来的类型的类名,例如:
if Sender=Edit2 then
TEdit(Sender).Text:='hehe';
FrameSniper
2003-09-24
打赏
举报
回复
type
TSomeProcType = procedure (var AI:Integer);
....
procedure SomeProcWithTypeParams(ASomeProcType:TSomeProcType);
....
procedure SomeProcWithTypeParams(ASomeProcType:TSomeProcType);
begin
ShowMessage(IntToStr(PInteger(@ASomeProcType)));
end;
这里就是将一个类型(过程类型)做为参数传递给相应方法进行处理!
leapmars
2003-09-24
打赏
举报
回复
使用 Class-reference types!
例如:
TMyClass = class(TObject)
......
end;
TMyClass2 = class(TMyClass)
......
end;
TMyClassRef = class of TMyClass; // 声明Class-reference types
procedure f(MyClass: TMyClassRef);
begin
.....
end;
调用的时候可以:
f(TMyClass);
f(TMyClass2); // TMyClass 的派生类也行!
DelphiBoy2003
2003-09-24
打赏
举报
回复
procedure a(s :string);
var
i :integer;
begin
if s = 'integer' then
i := 1
else
i := 0;
end;
tobelost
2003-09-24
打赏
举报
回复
你想實現什么?
你向我借錢,我通過短信息傳遞抽象的一千元,對你有什么用?
我相信還是錢的實體,人民幣(通過郵電局傳遞給你)對你有用處點。
對不起,所以,我不理解你的意圖。
java
类型
作为
参数
传递
的问题
java
类型
作为
参数
传递
的问题基本
类型
对象
类型
在实际开发中,在抽取公共方法的时候,对于一些值
传递
并没有做深入的了解,导致碰到了问题,现在对于值
传递
进行
总结。 基本
类型
对于基本
类型
,在Java语言提供了八种基本
类型
。六种数字
类型
(四个整数型,两个浮点型),一种字符
类型
,还有一种布尔型,同时还包括我们经常使用到的BigDecimal
类型
: 在方法调用时,实际
参数
把它的值
传递
给对应的形式
参数
,方法执行中形式
参数
值的改变不影响实际传入
参数
的值,这个时候是值
传递
。 public static void ma
Enum对象 作为
参数
如何
传递
? postman请求
在请求postman的时候,Enum对象作为
参数
如何
传递
? 要求:
传递
orders对象,用于es排序: private String fieldName; private OrderBy orderBy; public enum OrderBy { ASC("asc"), DESC("desc"); } Postman请求的时候,
参数
该如何传? ReportOrder: public class ReportOrder { private String ...
java中对象作为
参数
传递
给
一个
方法,到底是值
传递
,还是引用
传递
看完绝对清晰~ java中对象作为
参数
传递
给
一个
方法,到底是值
传递
,还是引用
传递
? pdd:所谓java只有按值
传递
:基本
类型
值
传递
;引用
类型
,地址值
传递
,所以叫值
传递
。 当主函数的变量,对象(主本)
传递
到副函数时,
传递
的变量、对象(方法中的形参)其实都是副本,而副本的改变不会影响主 本。 基本
类型
:
传递
的是值的拷贝,也就是说
传递
后就互不相关了,也就是说,不过副函数的副本如何...
java面试题:当
一个
对象被当作
参数
传递
到
一个
方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值
传递
还是引用
传递
?
java面试题:当
一个
对象被当作
参数
传递
到
一个
方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值
传递
还是引用
传递
? 答:是值
传递
。Java编程语言只有值
传递
参数
。 当
一个
对象实例作为
一个
参数
被
传递
到方法中时,
参数
的值就是该对象的引用
一个
副本。指向同
一个
对象,对象的内容可以在被调用的方法中改变,但对象的引用(不是引用的副本)是永远不会改变的。 1.Java中没有指针,所以也没有引用
传递
了,仅仅有值
传递
。不过,可以通过对象的方式来实现引用
传递
。类似java没有多继承,但可以用多次impl
Java传参-基本数据
类型
和引用数据
类型
作为
参数
的区别(值
传递
)
java中的方法可以
传递
参数
,
参数
的
传递
方法就是值
传递
。
参数
有形参和实参,定义方法时写的
参数
叫形参,真正调用方法时,
传递
的
参数
叫实参。调用方法时,会把实参
传递
给形参,方法内部其实是在使用形参。所谓值
传递
就是当
参数
是基本
类型
时,
传递
参数
的值,比如
传递
i=10,真实传参时,把10赋值给了形参。当
参数
是对象时,
传递
的是对象的值,也就是对象的首地址。就是把对象的地址赋值给形参。基本
类型
当做方法的形参时 当
Delphi
5,928
社区成员
262,931
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章