見出し画像

【Flutter/Dart】変数のあとに、?や!がつくのは、どうして?🤔


変数のあとに、?や!がつくのは、どうして?🤔

Dart言語(Flutterの開発に使用される)での?と!は、null許容性に関連しています。

  • ?: 型の後に?を付けると、その変数はnull値を許容することを意味します。つまり、その変数は値を持たない状態(null)になることがあります。

String? name; // nameはString型かnullのいずれかを持つ
  • !: 変数の後に!を付けると、その変数がnullでないことをDartに伝えます。null許容型の変数に対して使われ、実行時にその変数がnullでないことを保証します。

String? name;
print(name!); // nameがnullでないと仮定

? はnullを許容することを示し、! はnullではないことを強制するために使われます。

もし、!をつかったときに、nullだったらどうなるの?🤔

`!`を使ってnull許容型の変数にアクセスし、その変数が実際にnullだった場合、Dartは`NoSuchMethodError`の例外を投げます。これは、プログラムがnullでないと仮定した変数が実際にはnullであるため、その変数にアクセスできないことを意味します。そのため、`!`演算子は慎重に使用する必要があり、変数がnullでないことが確実な場合にのみ使うべきです。


よろしくお願いしますッ!