XE2 泛型练习1

要引用单元 System.Generics.Collections

implementation

{$R *.dfm}
var
i: Integer;
str: string;

procedure TForm1.btn2Click(Sender: TObject);
var
List: TList<Integer>;
begin
List := TList<Integer>.Create();
List.AddRange([11, 22, 33]);
str := ‘‘;
for i in List do
str := str + IntToStr(i) + ‘ ‘;
ShowMessage(str); { 11 22 33 }
List.Free;

end;

procedure TForm1.btn3Click(Sender: TObject);
var
List: TList<string>;
item:string;
begin
List := TList<string>.Create();
List.AddRange([‘123‘, ‘546‘, ‘字符串‘]);
str := ‘‘;
for item in List do
str := str + item + ‘ ‘;
ShowMessage(str); { 11 22 33 }
List.Free;

end;

万一博客园 泛型 网址 http://www.cnblogs.com/del/category/213198.html

//可在建立时同时指定排序器
procedure TForm1.Button3Click(Sender: TObject);
var
  List: TList<Integer>;
  Comparer: IComparer<Integer>;
begin
  {建立排序器}
  Comparer := TComparer<Integer>.Construct(
    function(const n1,n2: Integer): Integer
    begin
      Result := n2 - n1;
    end
  );

  List := TList<Integer>.Create(Comparer);
  List.AddRange([2, 3, 1]);

  List.Sort; {会根据建立时指定的排序器排序}

  str := ‘‘;
  for i in List do str := str + IntToStr(i) + ‘ ‘;
  ShowMessage(str); {3 2 1 }

  List.Free;
end;
时间: 2024-11-15 00:40:46

XE2 泛型练习1的相关文章

.NET编程01(泛型)

一:Object 类型:一切类型的父类,通过继承,子类拥有父类一切属性和行为:任何父类出现的地方,都可以用子类来代替: 用一个方法来完成多个方法做的事 /// <summary>    /// 普通方法类    /// </summary>    public class CommonMethod    {        /// <summary>        /// 打印个int值        /// </summary>        /// <

c#系统泛型委托

Action<T> 无返回值的系统泛型委托 namespace ConsoleApp1 { public class UserInfo { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } class Program { private static List<UserInfo> getInit() { return new List<User

泛型2

万用字符(wildcard) 以动物Animal类为例,怎样才能创建出一种ArrayList<?>里面既可以保存ArrayList<Dog>,又可以保存ArrayList<Cat>? public void takeAnimals(ArrayList<? extends Animal> animals){  //泛型中extends同时代表继承和实现. for(Animal a : animals){ a.eat(); } } 我们可以这样调用该函数: Ar

通过反射了解集合泛型的本质

通过反射了解集合泛型的本质 import java.lang.reflect.Method; import java.util.ArrayList; /** * 通过反射了解集合泛型的本质 * @author shm * */ public class MethodDemo02 { public static void main(String[] args) { ArrayList list = new ArrayList(); list.add("hello"); list.add(

构造方法中使用泛型

------------siwuxie095 构造方法中使用泛型: 构造方法可以为类中的属性初始化,如果类中的属性通过泛型指定,而又需要 通过构造方法设置属性内容的时候,构造方法的定义与之前并无不同,不需要 像声明类那样指定泛型 package com.siwuxie095.generic; class Context<T>{ private T value; public Context(T value) { this.value=value; } public T getValue() {

泛型委托当参数传递

假如有一个Person类: public class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Title { get; set; } } 执行一个方法: /// <summary> /// 传递一个泛型委托方法 /// </summary> /// <param name="acti

类库,委托,is和as运算符,泛型集合

类库:其实就是一堆类文件,只不过用户看不到这些类的源代码,保密性好. 优点:保密性好缺点:如果这个方法不好用,使用者无法自己去更改它. 类文件是.cs    类库是.dll 新建项目为类库,在debug文件夹下找到dll文件 委托:委托可以理解为:函数的指针 关键词:delegate 声明委托类型:public delegate int FirstDel(int a, int b); FirstDel不是类,是委托变量,不能实例化(不能new), 创建委托变量:FirstDel 名字 = 与这个

泛型委托

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 泛型委托 { public delegate int DelCompare<T>(T t1, T t2); // public delegate int DelCompare(object o1, object o2); class Progra

java 16-8 泛型高级之通配符

泛型高级(通配符) ?:任意类型,如果没有明确,那么就是Object以及任意的Java类了 ? extends E:向下限定,E及其子类 ? super E:向上限定,E极其父类 1 import java.util.ArrayList; 2 import java.util.Collection; 3 public class GenericDemo { 4 public static void main(String[] args) { 5 // 泛型如果明确的写的时候,前后必须一致 6 C