Autodesk.Revit.DB.KeyBasedTreeEntryTable
是Revit API提供的一种数据结构,用于存储以键值对形式组织的数据。在Revit中,常常需要存储某个元素及其相关信息,如元素的属性、位置等。KeyBasedTreeEntryTable
为这种数据存储提供了方便而高效的方式。
KeyBasedTreeEntryTable
提供了两种构造函数:
public KeyBasedTreeEntryTable();
public KeyBasedTreeEntryTable(IEqualityComparer<string> keyComparer);
其中第一个构造函数创建一个默认的表,不指定键的比较器;第二个构造函数则可以指定键的比较器。
KeyBasedTreeEntryTable
提供了以下属性:
int Count
:表中元素的数量。ICollection<string> Keys
:表中键的集合。ICollection<IList<object>> Values
:表中值的集合。KeyBasedTreeEntryTable
提供了以下方法:
void Add(string key, IList<object> value)
:向表中添加一个键值对。bool ContainsKey(string key)
:判断表中是否包含指定的键。bool Remove(string key)
:从表中移除指定的键值对。bool TryGetValue(string key, out IList<object> value)
:尝试获取表中指定键的值。以下是一个简单的KeyBasedTreeEntryTable
示例:
// 创建表
KeyBasedTreeEntryTable table = new KeyBasedTreeEntryTable();
// 向表中添加键值对
table.Add("Wall1", new List<object> { "Concrete", 10 });
table.Add("Wall2", new List<object> { "Brick", 8 });
// 获取表中的键值对
Console.WriteLine(table.ContainsKey("Wall1")); // True
Console.WriteLine(table.ContainsKey("Door")); // False
// 遍历表中元素
foreach (string key in table.Keys)
{
if (table.TryGetValue(key, out IList<object> value))
{
Console.WriteLine(key + ": " + string.Join(", ", value));
}
}
// 移除表中元素
table.Remove("Wall2");
// 遍历表中元素
foreach (string key in table.Keys)
{
if (table.TryGetValue(key, out IList<object> value))
{
Console.WriteLine(key + ": " + string.Join(", ", value));
}
}
输出结果为:
True
False
Wall1: Concrete, 10
Wall2: Brick, 8
Wall1: Concrete, 10