我自己想写一个类,但是我有一点不太清楚的地方就是,什么时候我该用new来使用这个类,也就是说,DELPHI中的类有没有JAVA或是C中的STATIC申明。如我写了一个类叫TMyClass,那么我的类实例应该是这样的
var
  myclass: TMyClass
begin
  myclass := new {我也不清楚这个new是不是该写} tmyclass.create();  //要写这一步吗?
  myclass.do();
  ...
end我有一点不明白的地方就是,是不是我一定要通过new或者.create()方法后才能使用该类的方法或是变量呢?

解决方案 »

  1.   

    Java偶不懂,便看你的结构应该是Java的用法吧?Delphi是这样的:
    var
      myclass: TmyClass
    begin
      myclass := TmyClass.Create;
      myclass.do;
      ...
      myclass.Free; //对象用完后要释放
    end;
      

  2.   

    你是想使用静态方法是吗?
    加stdcall关键字试试看。
      

  3.   

    我写了一个类,如果我没有通过
    myclass := TmyClass.Create;
    编译过程中有警告,但是程序运行没有错误,我的do()方法是public中申明的。
    如果我加上了myclass := TmyClass.Create;,并且在用完后通过.free或.destory来释放,编译没有警告,程序运行也没有什么问题,所以这就是我不明白的地方,我没有加上stdcall,也没有初始化类实例,但类仍然可以使用,到底在什么时候应该加上.create呢?
    还有,什么时候需要new呢?以下是我的想法,请勿见笑
    ------------------------
    如果是一个新的form,则需要.create(),如果是一个unit,则不需要。
      

  4.   

    new是创建一块一定大小的内存,如:
    var
      pInt:PInteger;
    begin
      new(pInt);
      pInt^:=1;
      showmessage(inttostr(i));
      dispose(pInt);
    end;
    而create可以看作除了创建内存以外,更对该类使用的值进行初始化。
    你没有调create就使用该类,只不过是碰巧没有出错而已,如果该类中有一个其它的成员类,你不初始化而使用是一定会出错的。