この質問は単に私の興味を満たすことです。 Choosing Between Classes and Structuresを読むと、ページには「16バイト未満のインスタンスサイズがあります」と表示されます。構造体インスタンスのサイズを計算するにはどうすればよいですか?
この単純不変の場合、struct
が与えられます。
public struct Coordinate
{
private readonly double _latitude;
private readonly double _longitude;
public Coordinate(double latitude, double longitude)
{
_latitude = latitude;
_longitude = longitude;
}
public double Latitude
{
get { return _latitude; }
}
public double Longitude
{
get { return _longitude; }
}
}
Doプロパティも16バイト制限にカウントされますか?または、フィールドカウントのみですか?
struct
を使用しない場合は、doubleが8バイトであるため、マイクロソフトが提供するガイドラインに違反しますか? 2つのダブルは16バイトで、正確には16バイトで、それ以下ではありません。フィールドのみカウント -
[私の構造で消費されたバイト数をチェックする方法]の複製が可能ですか?(http://stackoverflow.com/questions/3361986/how-to-check-the-number-of-bytes-consumed-by -my-structure) –
このガイダンスは、 'struct'を使用するかどうかの使い方を誤っています。セマンティックな理由から 'struct'を使うかどうかを決めるべきです。技術的な理由は、大丈夫ですが、セマンティックな理由から実際にパフォーマンスの問題を見つけた場合にのみ、念頭に置く必要があります。 – jason
@gcsoリンクのおかげで面白いread –