下面是对
http://expert.csdn.net/Expert/topic/2041/2041804.xml?temp=.1945764
的补充,我已将完整的资料整理成压缩包,放在http://61.129.75.211/images/delphi.rar上面,欢迎大家下载Assemblies and Delphi我相信大家通过上面的代码,应该对DELPHI for .NET有了一个大概的了解,从上面的代码中可以看到DELPHI语言的一小部分改进,但它的变化不止这些。单元命名空单
通过研究上面的代码,可以看到一个明显的改变就是支持命名空间的单元,合名空间允许你通过完整的标识符来访问单元,例如:
uses Borland.Delphi.SysUtils;
DELPHI单元用带有点名称来表示单元标识符和文件名(单元名与文件名称仍然必须一致,单元名可以忽略“.pas”)。
项目命名空间
你可以使用项目命名空间,项目命名空间是一个代替编译语句IFDEF的好的方法。项目命名空间的搜索路径
这里同样支持项目合名空间搜索路径,在单元引用时通过搜索路径可以找到单元命名空间的绝对路径,参考下面例子:
Uses Forms;
这在一个VCL项目中则表示Borland.VCL.Forms,而在一个CLX项目中则表示Borland.CLX.Forms,这取决于项目的开发平台(比如.NET,Win32,Linux)。默认的项目命名空间
你也可以建立一个可以编译到多个项目命名空间的单元,例如:
Unit MyControl;
在一个VCL项目中将会编译为Borland.VCL.MyControl.dcuil,而在CLX项目中将会编译为Borland.CLX.MyControl.dcuil。有效标识符
在标识符后可以使用保留字和关键字,便如下面代码:
var
   Label1: System.Label;
在类型表达式中可以使用保留字和关键字,但在标识符定义中不能使用。类型表达式System.Label是有效的虽然它包含保留字Label,未来的编译器计划要扩展标识符语法使其可以使用Unicode/UTF8编码的字符。
在Common Language Specification(通用语言说明书)包含这些扩展标识符的语法,DCCIL编译器将会支持这些扩展标识符语法。嵌套类型
参考下面代码:
type
TMyClass = class
  Fdata: Integer;
  const foo = 12;
  type TNestedClass = class
    procedure Hello;
  end;
  procedure Green;
end;
...
var
  MyClass : TMyClass;
  MyNest: TMyClass.TNestedClass;
...
begin
  MyClass.Fdata := 15;
  MyNest := TMyClass.TNestedClass.Create;
  MyNest.Hello;
  MyClass.Green;
end;
类型TNestedClass是嵌套在类型TMyClass中的,但是不影响TMyClass类型的实例,因为TMyClass.TNestedClass中定义的数据域不会占用TMyClass实例的空间,嵌套类型是命名空间思想的一个扩展,合呼命名习惯。
在上面的代码中,MyNest实例没有被释放掉是因为将被.NET RUNTIME释放。

自定义属性
DELPHI.NET中将支持基本的属性,例如:Conditional, Obsolete, Serializable, 和webMethod,你也可以创建自己的属性,就像下面代码:
type
  [ FooAttribute('Hello', 23) ]
  TMyClass = class
    [ SpecialDataAttribute ]
    Fdata: Integer;
    [ WebMethod, DebuggerStepThrough ]
    function SampleCount: Byte;
  end;声明自定义属性
DELPHI.NET允许你在.NET Application中建立自定义的属性,便如下面TQuantumAttribute的声明代码:
type
  TQuantumAttribute = class(TCustomAttribute)
    constructor Create;
    constructor Create(Name: String);
    property Name: String ...;
    property Spin: Double ...;
    property Color: TQuarkColor ...;
  end;类的静态数据域
在你的定义的类中可以拥有类数据域,利用这些静态的数据域,你可以做一些事情,例如可以存储类的实例的数量、类的一些信息等。
type
TMyClass = class
  class Fdata: Integer;
  class property Foo: String ...;
  class procedure One;
  class static procedure Two;
end;类的静态属性
和类的静太数据域相似,它的读取和写入必须通过静态方法。
类的静态方法
类的静态方法中除了不能使用“Self”之外,其他类似于传统的类方法。但是在传统的DELPHI程序中类方法中依然可以使用“Self”。值类型
类型可以被包装成为一个对象形式,值类型不是一个参考类型,它们是类型的实例。在DELPHI中记录类型便是值类型的一个例子,记录可以继承自其他记录,可以包含非虚方法、属性和嵌套类型。
当一个值类型被封装后,将产生一个新的值并且返回一个对象参考,该对象参考完全独立于原来的值类型,下面代码:
TObject(12).ToString
代码TObject(12)将一个整型数封装进一个对象。
对.net来说,delphi中值类型的封装是必须的,这种封装没有计划在Win32或Liunx版的Delphi中实现。记录的继承
在CLR中DELPHI将实现记录的值类型,记录的继承是值类型的一个方面,可以包含非虚方法是值类型的另一个方面。记录的方法
在Trecord类型中将允许声明方法。Sealed classes(这种类型不知道应该怎么用中文称呼,所以没有翻译)
 Sealed classes不能被继承,值类型只能继承自一个抽像的值类型,并且一个Sealed值类型可以被实例化。Final Method(同上面一样,还是英文称呼好一些)
在虚方法或是使用override的方法中,Final说明这个方法在类的派生类别中是不能被重载的,派生类中依然可以声明同名的方法来继承该方法。

其它可能的改变Multicast events
利用这种机制,你可以对每一个事件拥有多个监听器,这种事件模式不同于WIN32的事件模式,在WIN32的事件模式下,只要有事件第一次被响应,这个事件就会作废,而在这种新的事件模式下,多个组件可以响应同一个事件。
在这种事件监听模式下,你只可以删除自己的事件监听器,通过重载Include() and Exclude()这两个基本的方法来添加或删除你自己的事件监听器。在传统的模式下是通过赋值:=来指定事件处理过程。
Multicast events在Delphi.NET中被支持,也有可能在未来的DELPHI for Win32 or Linux中被支持。
Interface Method
旧版本中在类中对接口方法的声明:
Type
  TMyClass = class(TBaseClass, IFoo)
    procedure FooBar(paramlist);
    procedure IFoo.Bar = FooBar;
  end;
新版本中在类中对接口方法的声明:Type
  TMyClass = class(TBaseClass, IFoo)
    procedure IFoo.Bar(paramlist);
  end;
这时候TMyClass.IFoo.Bar当然也是正确的引用。
当使用多个接口时,这种新的声明方式便显示非常重要了,看下面的例子:
IFoo1 = interface
  procedure Bar;
end;IFoo2 = interface
  procedure Bar;
end;TSomeClass = class(TBaseClass, IFoo1, IFoo2)
  procedure IFoo1.Bar;
  procedure IFoo2.Bar;
end;
另外,BORLAND在delphi for .net preview中提供了delphi脚本的解释器,所以现在我们可以用DELPHI语言来写ASP.net了,我正在整理这方面的资料

解决方案 »

  1.   

    收藏起来慢慢看看吧,什么时候出正式得Delphi.net?
      

  2.   

    不知道效果如何,微软的东西总是很麻烦,繁琐!但愿borland......
      

  3.   

    刚下了BCS,还不敢装呢,听说可能要把好多东西弄成英文版得了
      

  4.   

    能用DELPHI写ASP.NET?
    好样的.Borland,你果然没让FANS们失望.
      

  5.   

    资料已整理好
    http://expert.csdn.net/Expert/topic/2064/2064394.xml?temp=.5373346