在 C# 中获取变量类型值

本文关键字:类型 变量 获取 | 更新日期: 2023-09-27 18:26:20

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

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

当我调试时,我看到存储在下面的值是这样的:
temp -> {string[1]}
[0] -> "C:''....其余路径">

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

在 C# 中获取变量类型值

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

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

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

string[] strArr = temp as string[];
string s = temp[0];

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

var mystring = temp[0];

这应该可以

你也可以检查字符串[]是否有任何字符串:

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

其中myString是类型 string 的变量

我找到了答案!

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;

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