C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

クラスの表示順を変える方法

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■93612 / inTopicNo.1)  クラスの表示順を変える方法
  
□投稿者/ パパす (1回)-(2019/12/26(Thu) 21:04:03)

分類:[.NET 全般] 

以下のようなクラスを定義したとします。


Public Class Animal_Class

Property Horse As Byte
Property Cat As Byte
Property Dog As Byte

End Class



しかし、デバッグ中に変数を確認すると
ABC順になるために
Cat
Dog
Horse
の順番で表示されてしまいます。

定義した順番で表示したいのですが
そのようなことは可能でしょうか?


引用返信 編集キー/
■93615 / inTopicNo.2)  Re[1]: クラスの表示順を変える方法
□投稿者/ 魔界の仮面弁士 (2543回)-(2019/12/27(Fri) 09:23:29)
No93612 (パパす さん) に返信
> 定義した順番で表示したいのですが
> そのようなことは可能でしょうか?

実際のところ、宣言順を考慮していないクラスも多数あると思いますので、
すべてのクラスにその並びが適用されてしまうと、メンバー数の多いクラスでは
探し難くなってしまい、むしろデバッグしにくくなるかもしれません。

将来的に、Visual Studio 側が右クリック等で並び順を切り替えられるように
なれば良いのですが、現状は型単位で並び順を提供するぐらいしか無いと思います。

たとえばこんな感じ。

※現状の VB は戻り値を ByRef にできないので、
 値を変更する時は [列ビュー] から行う必要があります。

<DebuggerTypeProxy(GetType(Animal_Class.Animal_ClassDebugView))>
Public Class Animal_Class
  Property Horse As Byte
  Property Cat As Byte
  Property Dog As Byte

  Friend Class Animal_ClassDebugView
    Public Sub New(owner As Animal_Class)
      Keys = Array.ConvertAll(
        GetType(Animal_Class).GetProperties(),
        Function(p) New KeyValuePair(Of String, Byte)(p.Name, CByte(p.GetValue(owner)))
      )
    End Sub
    <DebuggerBrowsable(DebuggerBrowsableState.RootHidden)>
    Public ReadOnly Property Keys As KeyValuePair(Of String, Byte)()
  End Class
End Class



そもそもデバッガにおいて、どの順番で表示されるべきかは、
いろいろな意見があるようです。

Unicode 文字列のコードポイント順が良いとか、
現在のロケールの照合順序に並ぶべきとか、
アンダーバー付きメンバーを優先表示したいとか、
宣言順(リフレクションで列挙される順)のままで良いとか。


たとえば今月だと、このような提案がありました。
https://github.com/dotnet/roslyn/issues/40179
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ