Skip to main content

指针: THIS

THIS 指针是用于面向对象编程的特殊变量。

THIS 是一个功能块的指针,指向它自己的功能块实例。一个 THIS 指针对每个功能块自动可用。您可以使用 THIS 仅在方法和功能块中。 THIS 可用于类别中的输入助手中的实现 关键词.

指针的解引用: THIS^

. 的使用 THIS 指针
  • 如果局部变量覆盖方法中的功能块变量,您可以使用 THIS 指针。请参见下面的示例 (1)

  • 如果指向功能块自己的功能块实例的指针被引用以在功能中使用。 (见下例(2))

100. 例子

英石

THIS^.METH_DoIt();

FBD/CFC/LD

_cds_img_pointer_this.png


101. 例子

iVarB 局部变量覆盖 iVarB 功能块变量。

FUNCTION_BLOCK  fbA
VAR_INPUT
    iVarA: INT;
END_VAR
iVarA := 1;

FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
    iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

    METHOD DoIt : BOOL
    VAR_INPUT
    END_VAR
    VAR
        iVarB: INT;
    END_VAR
    iVarB := 22;    // The local variable iVarB is set.
    THIS^.iVarB := 222;    // The function block variable iVarB is set even though iVarB is obscured.

PROGRAM PLC_PRG
VAR
   MyfbB: fbB;
END_VAR

MyfbB(iVarA:=0, iVarB:= 0);
MyfbB.DoIt();


102. 例子

函数调用需要引用它自己的实例。

FUNCTION funA
VAR_INPUT
    pFB: fbA;
END_VAR
...;

FUNCTION_BLOCK  fbA
VAR_INPUT
    iVarA: INT;
END_VAR
...;

FUNCTION_BLOCK fbB EXTENDS fbA
VAR_INPUT
    iVarB: INT := 0;
END_VAR
iVarA := 11;
iVarB := 2;

    METHOD DoIt : BOOL
    VAR_INPUT
    END_VAR
    VAR
        iVarB: INT;
    END_VAR
    iVarB := 22;    //The local variable iVarB is set.
    funA(pFB := THIS^);    //funA is called via THIS^.

PROGRAM PLC_PRG
VAR
    MyfbB: fbB;
END_VAR
MyfbB(iVarA:=0 , iVarB:= 0);
MyfbB.DoIt();


提示

THIS 尚未针对指令列表 (IL) 实现。