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