zoukankan      html  css  js  c++  java
  • 养成良好的编程习惯,一定要给参数加上修饰符。

    经过我写博客的总结: delphi 设计修饰符的目的 就是这样,就是想让你告诉编译器,参数是否会再函数内发生改变,或输出out。所以请养成习惯,不要省略。

    1.无修饰符:

    delphi会当成 unkown 来处理,这个时候 处理的很好,但是效率低(比如string等堆栈式存储的类型,他是会把指针复制一份入栈的,以防止你函数内部修改,因为一旦你函数内部修改了,为了避免影响原来调用此函数的函数内部的值跟着连带改变,所以他是把栈中的指针复制一份,若函数内部发生修改,就用这个新入栈的指针指向 新开辟的内存空间,这样不影响调用者内部的值发生连带改变。)可见delphi为了 开发者 设想的 很多啊,你少些了代码,delphi依然让你尽可能的不犯错,但是这是以牺牲效率为代价的。

     

    2.const修饰符 

    若参数再函数内部 不会发生改变,那么尽量多用这个,因为这个是直接把变量的指针自身传递过去,并没有把指针复制一份入栈,即没有任何新入栈的数据,所以效率高。包括 类的属性、记录的成员变量、接口等。

    都是这个规则。

     

    3.var 修饰符

    若参数 无论是string 还是 object 还是 interface 只要参数 需要再函数内部发生改变,那么就要 使用var 。var 也是直接传变量自身,没有复制变量指针新入栈。且允许 函数内部修改。

     

    4.out 修饰符

     我猜测delphi发明这个修饰符的目的是 让函数 可以对外输出一个实例变量。function abc(a: string): tobject; 与 procedure abc(a: string; out b: tobject) 相比,或许用out 更能节省前台的代码。

    即使不是为了节省前台的代码,那么一个函数 如果想输出一个实例变量 也又多了一种方式。更加灵活。所以 如上 你如果想输出b ,那么请你 不要对b进行初始化,因为即使你初始化了,b进入方法abc后

    之前的初始化也会被洗刷掉,那么又为何初始化呢,既然是函数向外输出,那么又为什么,你又要初始化后再传入函数呢。

  • 相关阅读:
    第2章—装配Bean—通过java代码装配bean
    第2章—装配Bean—自动化装配Bean
    第1章—Spring之旅—Spring模块介绍
    第1章—Spring之旅—容纳你的Bean
    第1章—Spring之旅—简化Spring的java开发
    Spring由于web配置导致的spring配置文件找不到的问题的解决方案
    java中Filter过滤器处理中文乱码的方法
    JAVA的NIO的新特性和小Demo,进一步了解NIO
    Azure linux centos 默认登陆账号是什么?
    Linux 获取文件时间信息 判断文件是否存在
  • 原文地址:https://www.cnblogs.com/del88/p/6674802.html
Copyright © 2011-2022 走看看