.csproj
に<Nullable>enable</Nullable>
を記述してNullableを有効にすると、コンストラクタElement(string value)
にてエラーが表示されます。
原因は、コンストラクタでフィールドを直接初期化していない(プロパティを介している)からだと考えます。
解決策として、#nullable disable
をフィールド前に追加するのは良い方法でしょうか。また、その他ダメ出しなどもあればお願いしたいです。
エラーとソースコードは以下の通りです。
Element.Element(string value) null 非許容の フィールド '_field' には、コンストラクターの終了時に null 以外の値が入っていなければなりません。フィールド を Null 許容として宣言することをご検討ください。
namespace Test { using System.Text.RegularExpressions; class Element { private string _field; public string Field { get { return this._field; } set { VerifyByRegex(value, "REGEX"); this._field = value; } } public Element(string value) { Field = value; } internal bool VerifyByRegex(string input, string pattern) { if (!Regex.IsMatch(input, pattern)) { throw new ArgumentException("ERROR"); } return true; } } }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/16 00:23