Hier sind einige Klassen:Was Ausnahme in String.Concat verursacht
public class MyItem : ParamOut
{
public string Code
{
get { return _quoteCode; }
}
public InnerItem[] Skus
{
get { return _skus; }
}
public PriceSummary Price
{
get { return _price; }
}
public override string ToString()
{
return string.Concat("Code=", Code, "; SKUs=[", Skus != null ? "{" + string.Join("},{", Array.ConvertAll(Skus, item => item.ToString())) + "}" : "", "]"
, "; Price={", Price.ToString(), "}", base.ToString()
);
}
...
}
public abstract class ParamOut
{
public override string ToString()
{
return null;
}
public string ErrorMessage { get; set; }
}
Hier ruft Funktionalität:
{
MyItem item = new MyItem{ ErrorMessage = "Bla-bla-bla" };
string text = item.ToString();
}
Ich erhalte Nullreference Ausnahme innerhalb von 'ToString()' Methode (jede Eigenschaft der Elementvariable ist null).
Frage:
Q1. Welche Überladung von string.Concat wird in diesem Fall aufgerufen? Ich habe 9-Parameter, also denke ich, eine der folgenden Möglichkeiten:
public static string Concat(params Object[] args)
oder
public static string Concat(params string[] values)
Aber welche von ihnen?
Q2. Warum wird eine Ausnahme generiert? Sollte 'null' nicht in etwas wie 'null' oder '' (leere Zeichenkette) umgewandelt werden?
Vielen Dank!
Können Sie die vollständige Traceback und vielleicht einige Beispielausführung, die es wirft werfen? Ich nehme an, dass Sie die Null-Ausnahme auf "item.ToString" innerhalb Ihres ternären Operators oder auf "Price.ToString()" oder "base.ToString()" treffen, und es ist nicht "Concat" selbst, das sich anschnallt eine Null. –