私は、さまざまなコントロールタイプで構成されたアプリケーションを持っています。これらのコントロールタイプはそれぞれ、オプションでパラメータオブジェクトにリンクできます。System.NullReferenceExceptionエラーの代わりに空の文字列を返します。エラー
これらは、後で再読み込みするためにXMLファイルに保存されます。コントロールをパラメータにリンクするには、指定されている場合は、コントロールにパラメータIDが格納されます。これはロード中に検索され、再リンクされます。
これはオプションであるため、パラメータが指定されていない場合、わかりやすいIDにアクセスしようとするとNullReferenceExceptionが発生します。私は問題の行の周りに小切手を置くことでこれを解決することができます。しかし、私はこの基本的な例で示すように、多くの異なるコントロールタイプと単なるリファレンス以上のためにこれを行う必要があります。
私の質問は、何とかこの呼び出しがこの例外の代わりに空の文字列を返すようにするエレガントな方法ですか?
public class Parameter
{
public string ID;
}
public class LabelCtrl
{
public string Name;
public Parameter LinkedParameter;
}
public class XMLManager
{
public void SaveControl(ControlInstance_LabelCtrl ci)
{
xmlWriter.WriteStartElement("ControlInstance_LabelCtrl");
{
xmlWriter.WriteElementString("Name", ci.Name);
// Elegant way to insert empty string instead of causing NullReferenceException error
xmlWriter.WriteElementString("LinkedParameter", ci.LinkedParameter.ID);
}
xmlWriter.WriteEndElement();
}
}
Try/Catchを使用しないのはなぜですか?または私は何かを逃していますか? – uTeisT
例外を防ぐことができるのはなぜですか? @uteist –
私は、try/catchに入れて、キャッチしたらString.Emptyを返します。または、xがnullの場合、何かブロックを実行します。 @PatrickHofman – uTeisT