首先,看看Axapta对MAP的说明吧.
A map is a data type that associates one value (the key) with another value.
Both the key and value can be of any valid X++ type, including objects.
The types of the key and the value are specified in the declaration of the map.
The way in which maps are implemented means that access to the values is very fast.

有人说,Map Object样子长的有点象数组Array.也有点象其他语言中的哈希表类型.不无道理,下面便是例子举证。

static void mapTest(Args _args)
{
 int i;
 map mapC = new map(types::Integer,types::String);
 map mapD = new map(types::Integer,types::String);
 i = 1;
 while (i<=20)
 {
  mapC.insert(i,"string: " + int2Str(i));
  mapD.insert(i,"data: " + int2Str(i));
  i++;
 }
// pause;

 i = 1;
 while (i<=20)
 {
  print mapc.lookup(i) + " # " + mapD.lookup(i);
  i++;
 }
 pause;

}

以上map的相貌有些象一维数组。
也有人说,甚至可以当成是二维数组看了..(有点悬..)
/*如下:
map mapd=new map(types::Integer,types::AnyType);
mapC.insert(i,"string: " + int2Str(i));
mapD.insert(i,mapc.lookup(i));
这样就是二维的了.*/

Including objects似乎包含MAP本身这种object 类型.但是,在下,怎么尝试还是不得而解.始终取不到mapC的最初数值.呵呵,或许真有高人如此使用,那就先宁可信其有吧.

另外,至于有点象其他语言中的哈希表类型之类云云,还没有好的例子来证明.不过,从Map承诺的: access to the values is very fast.来看,
起码也是一种快速存储数据的方式.或者,Axapta对MAP存储的格式做了某些雷同序列化之类的优化吧。

待续ing..(若有更新)