type t1 = class a := new integer[5]; end; t2 = class end; procedure p1(x: T); where T: t1; begin assert(x.a.GetType.FullName = 'System.Int32[]'); // говорит что "t1", хотя должно быть "array of word" end; procedure p2(x: T); begin assert(x.ToString = '2'); end; procedure p3(x: T); where T: class; begin assert(x.ToString = 'generics31.t2'); end; begin p1&,byte>(new t1); p2(2); p3(new t2); end.