0
var temp = toCheck.GetData(DataFormats.FileDrop);

我的程序中有上面的代码。toCheck 是一个 IDataObjecct 包含一个文件(具体的图像)路径。

当我调试时,我看到存储在下面的值:
temp -> {string[1]}
[0] -> "C:\....rest of path"

一切都是正确的,但是当我尝试访问里面的字符串时,我不能。如果我使用 toString() 方法,它返回 System.String[] 但不返回文件路径。
关于如何检索变量内的文件路径的任何建议?

4

3 回答 3

2

temp -> {string[1]}表示 temp 是string具有一个元素的类型数组。

[0] -> "C:\....rest of path"表示索引 0 处的元素等于路径。

由于GetData返回装箱为 的字符串数组object,因此您还必须先将其拆箱。然后您可以像这样简单地访问该元素:

string[] strArr = temp as string[];
string s = temp[0];
于 2015-12-11T00:13:21.940 回答
1

temp是一个字符串数组,这就是你得到它的原因。如果要获取数组的第一个字符串,则:

var mystring = temp[0];

那应该做

您还可以检查 string[] 是否有任何字符串:

if(temp.Length > 0) myString = temp[0];

myString类型变量在哪里string

于 2015-12-11T00:11:29.620 回答
0

我找到了答案!

string[] arr = ((IEnumerable)temp).Cast<object>().Select(x => x.ToString()).ToArray();

使用上面的语句,您可以从类型对象转到字符串数组。
你需要包含using.System.Linq它才能工作。

 var temp = toCheck.GetData(DataFormats.FileDrop);
        string[] arr = ((IEnumerable)temp).Cast<object>().Select(x => x.ToString()).ToArray();
        string path = "";

        foreach(string a in arr)
            path = a;

如果有人好奇,这最终就是所有代码。我遍历数组,否则它会在我调试时跳过函数的其余部分。不确定是什么原因造成的,但这有效。谢谢大家的帮助!

于 2015-12-11T16:14:25.740 回答