Successfully reported this slideshow.
Your SlideShare is downloading. ×

C#の構造体

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 13 Ad

C#の構造体

Download to read offline

C#には古くから構造体という仕組みがあります。Javaのプリミティブ型とよく似ていますが、それよりはるかに使いやすくなっています。あまり注目されませんがC#の大きな売りなので解説してみました。

C#には古くから構造体という仕組みがあります。Javaのプリミティブ型とよく似ていますが、それよりはるかに使いやすくなっています。あまり注目されませんがC#の大きな売りなので解説してみました。

Advertisement
Advertisement

More Related Content

More from potimarimo (20)

Recently uploaded (20)

Advertisement

C#の構造体

  1. 1. C#の構造体
  2. 2. C#の構造体 public struct Struct1 { public Struct1() { } public Struct1(int x) { X = x; } public int X { get; set; } = 0; public void Clear() { X = 0; } }
  3. 3. 構造体のメリット メモリ管理が軽い •低レベルかつパフォーマンスの問題な ので、本当に軽いかどうかは測定してみ ないとわからない。
  4. 4. 構造体とは • newやmake_sharedなどを使わずに素の型で宣言した変数 • 利用側ではなく型の定義で決まる C,C++を知っている人には • メモリ管理がプリミティブ型と同じです Javaを知っている人には • 構造体です Swiftを知っている人には
  5. 5. 本日の解説では ポインタという言葉は使いません • ポインタなんて年寄りの甘えです 低レイヤーの話がたくさん出てきますが、なる べく飛ばします
  6. 6. 標準ライブラリの構造体 int double DateTime Guid その他い ろいろ
  7. 7. 構造体の選択 型のインスタンスが小さく、有効期間が短いことが多い場合、または他のオブジェクトに埋 め込まれることが多い場合は、クラスではなく構造体を定義することを検討してください。 型が次のすべての特性を持つ場合を除き、構造体を定義することは避けてください。 • プリミティブ型 (int、double など) と同様に、論理的に単一の値を表す。 • インスタンスのサイズが 16 バイト未満である。 • 不変である。 • 頻繁にボックス化する必要がない。
  8. 8. スタックとヒープ スタック ヒープ
  9. 9. 構造体が有利な場合 変数 配列 その 他
  10. 10. クラスと構造体 クラス オブジェクトはヒープに保存される 変数などでは参照だけ管理 構造体のフィールドがクラスなこともある 構造 体 参照は普通は持たず代わりにオブジェクトそのものを管理 別の変数や引数に代入される時はコピー object型にキャストするとBoxingやUnboxingが入る。 クラスのフィールドが構造体なこともある
  11. 11. 値型 オブジェクトを値として扱う •状態が同じなら等しい •イミュータブルであることが望ましい
  12. 12. .NETでの値型 構造体 record型 クラスでも 実装可能
  13. 13. 構造体参照 引数 •C#7~ その他

×