如何解决hastables的hastable,.Add访问问题
我正在尝试重新创建一个已经在Ruby
中使用过的旧脚本,并且我正在使用C#进行此操作,因为我正在将我的项目迁移到Unity。
该脚本在3个不同级别的文件夹内搜索文件。这就是我的意思,是filepath
,Folder1/Folder2/Folder3/files_are_here
。
说明:我的工作脚本(在Ruby
上)是通过搜索每个"Folder1"
并将每个名字作为Hashtable
的键来实现的。 (因此,现在我有了一个Hashtable
,其中每个键都是一个文件夹的名称,该文件夹将代表我上面提到的"Folder1"
的{{1}}部分)。
我还为每个键定义了一个值,一个新的filepath
。
此后,对于我的Hashtable
中的每个"Folder1"
,它都会对每个Hashtable
内的每个"Folder2"
执行第二次搜索,在这里我添加了每个"Folder1"
,作为包含该"Folder2"
的{{1}}的{{1}}的密钥。
对于每个Hashtable
的每个"Folder1"
,我搜索"Folder2"
内的"Folder2"
内的每个"Folder1"
,等等。
我有问题。我有自己的主"Folder3"
,每个键代表一个"Folder2"
,并且可以在每个"Folder1"
中搜索每个Hashtable
。
我的问题是当我尝试做时:
"Folder1"
它说"Folder2"
,但如果我:
"Folder1"
它打印main_hash[first_folder.Key].Add(folder_2_name,new Hashtable())
,因此它是('object' does not contain a deFinition for 'Add')
,它必须具有Debug.Log(main_hash[first_folder.Key])
方法。
这是怎么回事?有谁知道?。 (即使您告诉我以其他方式执行此操作,以便我可以改进它,我也想知道为什么会出现该错误)。
解决方法
它实际上是一个HashTable,但是包含它的main_hash
是一个对象集合。如果确定在此集合中总能找到一个哈希表,则可以通过强制转换将其解析为哈希表:
((HashTable)main_hash[first_folder.Key]).Add(...)
否则,您可以输入类型化的引用并对其进行测试:
var table = main_hash[first_folder.Key] as HashTable;
if(table != null)
{
table.Add(...);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。