[解決済み] 構造体がインターフェースを実装するのは安全か?
2022-11-17 21:52:54
質問
C# 経由の CLR で構造体がインターフェースを実装するのは良くないというようなことを読んだような記憶があるのですが、それに関する情報が見つからないようです。 それは悪いことなのでしょうか。 そうすることで意図しない結果があるのでしょうか。
public interface Foo { Bar GetBar(); }
public struct Fubar : Foo { public Bar GetBar() { return new Bar(); } }
どのように解決するのですか?
この質問にはいくつかの事柄があります...
構造体がインターフェースを実装することは可能ですが、キャスト、ミュータビリティ、パフォーマンスに関する懸念があります。詳しくはこの投稿をご覧ください。 https://docs.microsoft.com/en-us/archive/blogs/abhinaba/c-structs-and-interface
一般に、構造体は値型セマンティクスを持つオブジェクトに使用されるべきです。構造体にインターフェースを実装すると、構造体とインターフェースの間で構造体のキャストを行ったり来たりするため、箱詰めの問題に直面することがあります。箱詰めの結果、構造体の内部状態を変更する操作が正しく動作しない可能性があります。
関連
-
[解決済み】SmtpException: トランスポート接続からデータを読み取れません:net_io_connectionclosed
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#のインターフェイス。暗黙の実装と明示の実装
-
[解決済み] ミュータブル構造体はなぜ "悪 "なのか?
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み】トレイトとインターフェイスの比較
-
[解決済み] コンストラクトシグネチャを持つインターフェースはどのように機能するのですか?
-
[解決済み] Go インターフェース フィールド
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] 1つ以上のエンティティで検証に失敗しました。詳細は'EntityValidationErrors'プロパティを参照してください [重複]。
-
[解決済み】Ajax処理で「無効なJSONプリミティブ」と表示される件
-
[解決済み】C#で四捨五入する方法
-
[解決済み】リソースの読み込みに失敗した:ステータス500(内部サーバーエラー)のサーバーの応答)
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】"指定されたパスのフォーマットはサポートされていません。"
-
[解決済み】「...は'型'であり、与えられたコンテキストでは有効ではありません」を解決するにはどうすればよいですか?(C#)
-
[解決済み】Visual Studio: 操作を完了できませんでした。パラメータが正しくありません
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み] 2つのリストを結合する