var temp = toCheck.GetData(DataFormats.FileDrop);
我的程序中有上面的代码。 toCheck是一个包含文件(特定图像)路径的IDataObjecct。
当我调试时,我看到存储的值如下:
temp - > {串[1]}
[0] - > " C:\ ....其余的路径"
一切都是正确的但是当我尝试访问里面的字符串时,我不能。如果我使用toString()方法,则返回System.String []但不返回文件路径 关于如何在变量中检索文件路径的任何建议?
答案 0 :(得分:2)
temp -> {string[1]}
表示temp是一个带有一个元素的string
类型的数组。
[0] -> "C:\....rest of path"
表示索引0处的元素等于路径。
由于GetData
返回装箱为object
的字符串数组,因此您还必须先将其取消装箱。然后你可以像这样简单地访问那个元素:
string[] strArr = temp as string[];
string s = temp[0];
答案 1 :(得分:1)
temp
是一个字符串数组,这就是你得到它的原因。如果你想得到数组的第一个字符串:
var mystring = temp[0];
应该这样做
此外,您可以检查字符串[]是否包含以下字符串:
if(temp.Length > 0) myString = temp[0];
其中myString
是string
答案 2 :(得分:0)
我找到了答案!
string[] arr = ((IEnumerable)temp).Cast<object>().Select(x => x.ToString()).ToArray();
使用上面的语句,您可以从type对象转换为字符串数组
您需要包含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;
如果有人好奇,这最终成了所有代码。我遍历数组,因为否则它会在我调试时跳过函数的其余部分。不确定是什么导致了这个,但这有效。谢谢大家的帮助!