在C#中获取var类型值

时间:2015-12-11 00:07:56

标签: c# .net var idataobject

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

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

当我调试时,我看到存储的值如下:
temp - > {串[1]}
[0] - > " C:\ ....其余的路径"

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

3 个答案:

答案 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];

其中myStringstring

类型的变量

答案 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;

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