Предположим, у меня есть массив строки коробочный к объекту:Как удалить массив строк?
string[] files = Directory.GetFiles(path);
object obj = files;
Как я могу снова Unboxed в files
в массив строки?
Предположим, у меня есть массив строки коробочный к объекту:Как удалить массив строк?
string[] files = Directory.GetFiles(path);
object obj = files;
Как я могу снова Unboxed в files
в массив строки?
Туз оператор похож на гипсе, за исключением того, что дает нулевой при сбое преобразования вместо повышения исключения. As operator
string[] someVarArray = obj as string[]
if(someVarArray!=null)
{
//do something
}
вы могли бы использовать в качестве оператора ..
if (obj is string[])
string[] files = obj as string[];
вы могли бы просто «бросить» его обратно ....
if (obj is string[])
string[] files = (string[])obj;
Что вам нужно, это литая, не бокс и распаковка.
string[] files2 = (string[])obj;
Но знайте, это сделать, если вы уверены, что ваш объект содержит массив строк (строка []), или в противном случае вы получите InvalidCastException. Если вы не уверены, у вас есть два способа проверки объекта:
string[] files2;
if(o is string[])
{
files2 = (string[])o;
// do whatever with files2
}
или
string[] files2 = o as string[];
if(files2 != null)
{
// do whatever with files2
}
+1 для покрытия нескольких вариантов – phoog
Берегитесь вашей формулировкой: строки не «окно». То, что вы сделали, неявно преобразует массив строк в объект, но никакой бокс не задействован и не распаковывается. Чтобы уточнить, бокс и распаковка - это термины, используемые при преобразовании типов значений в ссылочные типы и из них. System.String не является типом значения. –
Продолжение: массив строк также не является типом значений и не является массивом * anything * типа значения. Термины, которые вы хотите использовать, - это * cast * и * convert *. –
спасибо Энтони. – yonan2236