3

Переопределение класса ToString(), как правило, все, что вам нужно сделать, чтобы получить пользовательское форматирование в окне просмотра, но когда класс получен из списка, он, похоже, не работает.Можно ли настроить значение окна просмотра в списке <>?

class ListOfInts : List<int> 
{ 
    public override string ToString() 
    { 
     return string.Join(",", this); 
    } 

    public static ListOfInts test = new ListOfInts() { 3, 4, 5 }; 
} 

Осматривая «тест» в окне просмотра я получаю

ListOfInts.test    Count = 3 ListOfInts 

и придется вручную форсировать так:

ListOfInts.test.ToString() "3,4,5"  string 

Это нормально для одного списка, но У меня большой массив вещей. Есть ли способ остановить формат по умолчанию «Count = 3» от приоритета?

+3

Никогда не используется, но попробуйте [ 'DebuggerDisplay'-атрибут] (https://msdn.microsoft.com/en-us/library/x810d419.aspx) –

ответ

2

Вы можете использовать DebuggerDisplayAttribute:

[DebuggerDisplay("{ToString()}")] 
public class ListOfInts : List<int> 
{ 
    public override string ToString() 
    { 
     return string.Join(",", this); 
    } 
} 
+0

Интересно узнать, почему в его окне быстрого просмотра не используется переопределенная «ToString». Я предполагаю, что это имеет какое-то отношение к его настройкам отладчика (например, «показать исходную структуру для объектов в окнах переменных»). –

+0

@TimSchmelter. В моем LinqPad он использует переопределенный 'ToString()' без атрибута '[DebuggerDisplay]'. Однако не проверял VS. – haim770

+0

Может быть, хотя эта особенность не имеет значения. Использование этого атрибута определенно делает, хотя -) – tombola