谁能告诉我关于is,as的用法?(100分)

  • 主题发起人 主题发起人 pop11
  • 开始时间 开始时间
P

pop11

Unregistered / Unconfirmed
GUEST, unregistred user!
我对is,as的用法搞不懂,请哪位可以把它们的用法讲一讲,详细点
 
怎么没人理我,帮帮忙!!
 
举个例子:
var xh:integer;
for xh:=0 to Panel5.ControlCount-1do
if Panel5.Controls[xh] is Tedit then
//是不是(is)TEdit控件
(Panel5.Controls[xh] as TEdit).Text:='';

//是的话把它当作(as)TEdit控件,因为并不是所有控件都有Text属性。
 
as用于类型转换
is判断两个对象是否是兼容类型
 
能不能再具体点
 
同意楼上
 
to pop11:
is 是判断一个对象实例是否兼容,返回一个布尔值。其主要是用于强制转换对象前用
的,以免产生一个类型转换异常。
as 是把一个对象实例强制转换成一种兼容的对象。
如:if Sender is TEdit then
(Sender as TEdit).Text:='Test'其作用等同于
if Sender is TEdit then
TEdit(Sender).Text:='Test'
我知道的就是这些,当然我也只用这些。
 
关注..
我觉得这问题比较含糊。。
我的用法:
is 作为类型判断
 
如果一个过程的参数是一个比较祖先的类,而传递的实参是它的继承类,就要用:
过程名(继承类 AS 祖先类)
反过来就不行;
IS 是用来判断的,返回一个布尔值 IF 继承类 IS 祖先类 then
反过来也不行;
 
is 转化耗内存(据说)
用xxx.classname吧。。
 
is,as的用法我已经基本明白了,但是我爱pascal所说的继承类和祖先类能不能再详细点!
 
谁知道关于as,ia 中关于继承类和祖先类是什么一回事?
 
Is 是用來判斷實例是否為指定的類別
Components[iCount] is TCheckBox -> 如果Components[iCount]是的類別是TCheckBox
或是TCheckBox的子類, 則會傳回True
as 是傳換實例的類, 有點類似型態轉型,
Components[iCount] as TCheckBox, 意指將Components[iCount]類型轉換為TCheckBox
因為Components本身宣告的類型為TComponent, 但它存放的TComponent的子類實例,
如果直接使用Components[iCount]則編釋只能認得TComponent所擁有的屬性;
即使存放
放的實例為TCheckBox, 也無法使用TCheckBox所擁有的屬性;
所以以下語法:
//判斷Components[iCount]是否為TCheckBox類型
if (Components[iCount] is TCheckBox) then

//將Components[iCount]轉換為TCheckBox類型, 並讀取TCheckBox才擁有的屬性Checked
if (Components[iCount] as TCheckBox).Checked then

ShowMessage('CheckBox is Checked);

 
通俗的说,
is 是判断,
eg. if myEdit is Tedit then

可以翻译为 如果myEdit 这个控件 属于Tedit 类XXXX

as 是作为强行类型转换
eg
(Sender as Tedit).Text := 'XXX';

可以翻译为 将Sender 强行转换为Tedit,XXXXX
____________________________________
唉,我吾话可说啦!
 
is 是“是什么”
as 是“变成什么”
 
多人接受答案了。
 
"is" is boolean
"as" is class
 
后退
顶部