Получить значение типа var в C#

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

У меня есть код выше в моей программе. toCheck - это IDataObjecct, содержащий путь к файлу (точнее к изображению).

Когда я отлаживаю, я вижу значение, хранящееся как:
temp -> {string [1]}
[0] -> "C: \.... остаток пути"

Все правильно, но когда я пытаюсь получить доступ к строке внутри, я не могу. Если я использую метод toString(), он возвращает System.String[], но не путь к файлу.
Любые предложения о том, как я могу получить путь к файлу внутри переменной?

3 ответа

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;

Это закончило тем, что было всем кодом, если кому-то любопытно. Я перебираю массив, потому что в противном случае он пропустит оставшуюся часть функции при отладке. Не уверен, что это было причиной, но это работает. Спасибо за вашу помощь!

Другие вопросы по тегам