`
yunzhongxia
  • 浏览: 650018 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Dictionary与Object的区别

    博客分类:
  • flex
 
阅读更多

       AS3中Object和 Dictionary都可以用来保存key-value形式的数据,Dictionary类和Object唯一的区别在于:Dictionary对象可以使用非字符串作为键值对的键。例如:

var obj:Object = new Object(); 
obj["name"] ="name"; // key 字符串"name" 
obj[1] = 1; // key是1 (被转换成字符串"1") 
obj[new Object()] ="object"; // key是new Object(),被转传成字符串"[object Object]" 
for (var key:String in obj) { 
        trace(key+":"+obj[key]); // 输出 1:1 [object Object]:object name:name
}

 

也就是说,无论用什么类型的变量作为键,Object都将key转换成字符串。同时,如果你使用了不同的对象作为键,都会被转换成字符串"[object Object]"作为键,因此而指向了同一个数据。例如:

	var a:Object = new Object();    
	var b:Object = new Object();    
	var obj:Object = new Object();    
	obj[a] = 1; // obj["[object Object]"] = 1;    
	obj[b] = 2; // obj["[object Object]"] = 2;    
	for (var key:String in obj) {    
	       trace(key+":"+obj[key]); // traces: [object Object]:2 
	}

 

Dictionary类将没有这个限制,你可以将键设置成任何一种数据类型。例如:

var a:Object = new Object(); 
var b:Object = new Object(); 
var dict:Dictionary = new Dictionary(); 
dict[a] = 1; // dict[a] = 1; 
dict[b] = 2; // dict[b] = 2; 
for (var key:* in dict) { 
       trace(key+":"+dict[key]); // traces: [object Object]:2 [object Object]:1
}

 

注意

1、虽然在trace的时候,输出的还是[object Object],但是这个结果是对象的toString的结果。在Dictionary对象中,代表的是不同的对象引用。

2、这里的key的类型是*。这是很重要的,因为dict对象中的键可能是任何数据类型的。

 

 

3、Object的键必须是字符串,或表示字符串的表达式(变量或函数),若不是字符串的表达式,则将调用toString()方法,将其转化为字符串;

4、与Object不同的是,Dictionary使用的键是对象的引用,而不是字符串,且非原始对象键调用之前是通过全等运算符(===)来进行判断,并不会将数据类型强制转换之后再进行判断。

0
1
分享到:
评论

相关推荐

    C#数组中List, Dictionary的相互转换问题

    将数组转换为Dictionary 将Dictionary 转换为数组 将List转换为Dictionary 将Dictionary转换为List 首先这里定义了一个“Student”的类,它有三个自动实现属性。 class Student { public int Id { get; set; ...

    iOS对象转字典 object2Dictionary

    "iOS对象转字典 object2Dictionary"这个话题聚焦于如何将Objective-C或Swift中的对象转换成字典(NSDictionary或Swift的Dictionary类型),进而可能进一步转化为JSON格式。这种转换在序列化和反序列化过程中扮演着...

    如何获取object中的属性值

    Dictionary, object> json = (Dictionary, object>)serializer.Deserialize(jsonResult, typeof(Dictionary, object>)); ``` 4. **获取嵌套属性值**: ```csharp object aa = json["xml"]; Dictionary, object...

    C#中Json 解析类库,使用dictionary 解析未知字段的对象

    Dictionary, object> jsonDictionary = new Dictionary, object>(); ``` 3. 解析JSON字符串:使用`JsonConvert.DeserializeObject`方法将JSON字符串解析为Dictionary对象。 ```csharp string jsonString = "{\...

    unity3d-ordered-dictionary:用于将有序字典添加到自定义`ScriptableObject`和`MonoBehaviour`类的库,只要键和值类型可序列化,可通过Unity对其进行序列化

    该软件包与工具兼容。 有关将程序​​包同步到Unity项目中的信息,请参阅工具的。 特征 具有直观界面的默认检查器。 为名称使用键的UnityEngine.Object的位置插入插入。 每个ScriptableObject或MonoBehaviour都有...

    用Dictionary写的对象池

    Dictionary, Stack<MyObject>> objectPool = new Dictionary, Stack<MyObject>>(); ``` 2. 获取对象:当需要对象时,检查对象池中是否存在可重用的对象。如果存在,就从堆栈中弹出一个;如果不存在,根据需求新建一...

    Object2Dictionary:对象转字典,对象转json

    Object2Dictionary 对象转字典,对象转json -------------- 自定义对象 e.g. -------------- Header * header=[[Header alloc] init]; header.code=@"200"; header.message=@"成功"; Body * body=[[Body alloc...

    Oracle Dictionary常用方法封装

    5. **对象状态检查**:提供检查对象是否存在的函数,如`OBJECT_EXISTS(object_name VARCHAR2) RETURN BOOLEAN`。 6. **触发器和存储过程信息**:可能包含获取或列举表关联的触发器和存储过程的函数。 7. **表空间...

    ABAP SAP Dictionary

    13. 在何处用到过:SAP Dictionary的定义广泛应用于SAP系统的各个模块,包括FI(财务会计)、CO(成本会计)、MM(物料管理)、SD(销售与分销)、PP(生产计划)等,几乎涵盖了所有业务流程的后台数据支持。...

    Dictionary, SortedDictionary, SortedList 横向评测

    即使使用 Object 类型的 Dictionary 也比 Hashtable 稍快。 SortedDictionary SortedDictionary 是一个泛型类,提供了从一组键到一组值的映射。它是一个二叉搜索树,其中 n 是字典中的元素数。检索运算复杂度为 O...

    C#实现json格式转换成对象并更换key的方法

    在C#中,处理JSON数据是一项常见的任务,特别是在与Web服务交互或进行数据存储和检索时。本篇文章将深入探讨如何将JSON格式的数据转换为C#对象,并在转换过程中替换键(key)的方法。首先,我们需要理解JSON...

    Tool for Flatten A Folder

    标题“Tool for Flatten A Folder”指的是一个用于整理和扁平化文件夹结构的命令行工具。这个工具的主要功能是帮助用户将多个不同目录下的特定文件复制到一个单一的目标目录中,从而实现文件夹的扁平化,使得文件...

    silverlight datagrid动态绑定dictionary 列表

    Dictionary, object> myDictionary = new Dictionary, object>(); // 填充字典... // 创建转换器 var converter = new DictionaryToListConverter(); var observableList = (ObservableCollection)converter....

    contains 和 Dictionary学习

    var value:Object = dictionary[key]; dictionary[key] = newValue; ``` `Dictionary` 还有一些需要注意的特性: 1. `Dictionary` 不会自动管理键的引用,如果键的对象被销毁,对应的条目也不会自动删除。 2. 由于...

    HashTable、HashSet和Dictionary的区别点总结

    HashTable、HashSet和Dictionary的区别点总结 在C#中,HashTable、HashSet和Dictionary都是常用的集合类,但是它们之间有着很大的区别。本文将从 HashTable、HashSet和Dictionary的定义、特点和使用场景等方面对其...

    ABAP Dictionary

    7. 业务对象和业务数据类型:ABAP字典支持面向对象的概念,如业务对象(Business Object)和业务数据类型(Business Data Type),它们用于更复杂的业务逻辑和数据模型。 8. 与ABAP代码的交互:ABAP字典中的对象...

    C# Dictionary去重算法

    public override bool Equals(object obj) { return obj is ValueWrapper<T> && EqualityComparer<T>.Default.Equals(Value, ((ValueWrapper)obj).Value); } public override int GetHashCode() { return ...

    对python中Json与object转化的方法详解

    一个python object无法直接与json转化,只能先将对象转化成dictionary,再转化成json;对json,也只能先转换成dictionary,再转化成object,通过实践,源码如下: import json class user: def __init__(self, ...

    M13OrderedDictionary, 带有有序对象和键的NSDictionary.zip

    M13OrderedDictionary, 带有有序对象和键的NSDictionary M13OrderedDictionaryM13OrderedDictionary是NSArray和NSDictionary之间的交叉。 它包含一个有序的对象和键列表。 所有这些都可以通过索引或者键访问。 这里...

Global site tag (gtag.js) - Google Analytics