
前提・実現したいこと
たとえ配列内のデータに空白(Null)があっても
エラーを出さずにNullのまま表示したいです。
データとしてはCSVを想定しています。
データが
1,1,\"{1,2,3}\"
の場合は出力が
1, 2, 3
となり、問題ありません。
ただ、データが
1,1,\"{,,}\"
のように空白が含まれているデータを読もうとして
double[]
をdouble?[]
に、
double.Parse
をdouble?.Parse
に変更すると、
Severity Code Description Project File Line Suppression State Error CS1525 Invalid expression term 'double' Nullable_Double_Array Program.cs 15 Active
というエラーが出ます。
期待している出力は
, ,
です。
このようにエラー無く、Null許容型で取得・表示するにはどうすればよいのでしょうか?
該当のソースコード
C#
1using System; 2using System.Text.RegularExpressions; 3 4namespace Nullable_Double_Array 5{ 6 class Program 7 { 8 static void Main(string[] args) 9 { 10 //var numbers = Regex.Match("1,1,\"{1,2,3}\"", @"\{(?<numbers>[-?\d+(.?\d+)?(E[+-]\d+)?,]+)\}").Groups["numbers"].Value; 11 //double[] test_ = Array.ConvertAll(numbers.Split(new[] { ',', }), double.Parse); 12 13 var numbers = Regex.Match("1,1,\"{,,}\"", @"\{(?<numbers>[-?\d+(.?\d+)?(E[+-]\d+)?,]+)\}").Groups["numbers"].Value; 14#nullable enable 15 double?[] test_ = Array.ConvertAll(numbers.Split(new[] { ',', }), double?.Parse); 16#nullable disable 17 Console.WriteLine($"{test_[0]}, {test_[1]}, {test_[2]}"); 18 } 19 } 20}
試したこと
Nullableを使用するため、
double[] test_ = Array.ConvertAll(numbers.Split(new[] { ',', }), double.Parse); ↓ double?[] test_ = Array.ConvertAll(numbers.Split(new[] { ',', }), double?.Parse); ```に変更しました。 また、Nullableが使用可能なC# 8.0を選び、 ```ここに言語を入力 #nullable enable #nullable disable
で囲みました。
補足情報(FW/ツールのバージョンなど)
OS: Windows10
IDE: Visual Studio Community 2019
.NET Core: 3.1 (LTS)
C#: 8.0


回答2件
あなたの回答
tips
プレビュー