質問
C#でint、boolなどの非脆弱な値タイプを作成する方法は?
解決
はい、これらは呼ばれます struct
.
構造体は、同じタイプです int
, bool
その他。
彼らは彼らに関連するいくつかのルール/推奨事項を持っています:(私はこれらが最も重要だと思います)
refまたはoutキーワードを使用していない場合、構造体は渡され、値によって割り当てられます...これは、構造体内に入れるものはすべて、メソッドに割り当てたり渡されたりするときにコピーされることを意味します。だからこそ、大きな構造体を作ってはいけません。
C#の構造体のパラメーターのないコンストラクターを定義することはできません
構造体は不変であり、プロパティセッターがない方が良いです。可変構造体を作ることで、本当のトラブルに巻き込むことができます。
他のルールは、構造に関するMicrosoft Docsに記載されています。
はどうかと言うと 非不可能な参照タイプ... これは ありえない. 。コード内のヌルを手動で確認する必要があります。
他のヒント
7年後、これが可能になりました
- C#8を含む.NET Core 3.0をインストールします。
- 言語バージョンを.csprojファイルに8.0:8.0に設定します。
- プロパティをtrue(.to your your csprojに追加)
彼の詳細は、これが書くコードと既存のコードに影響を与えます。
https://praeclarum.org/2018/12/17/nullable-reference-types.html
あなたはaを定義できます struct:
構造体タイプは、通常、長方形の座標やインベントリ内のアイテムの特性など、関連する変数の小さなグループをカプセル化するために使用される値タイプです。次の例は、単純な構造宣言を示しています。
public struct Book { public decimal price; public string title; public string author; }
ただし、ようなエイリアスを定義することはできません int
為に System.Int32
フルネームで参照する必要があります MyNamespace.Book
(また Book
と using MyNamespace;
)あなたの構造体に。