Вот несколько классов:
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; }
}
Функциональность вызова:
{
MyItem item = new MyItem{ ErrorMessage = "Bla-bla-bla" };
string text = item.ToString();
}
Я получаю исключение NullReference внутри метода ToString () (каждое свойство переменной элемента равно нулю).
Вопрос:
Q1. какая перегрузка string.Concat будет вызываться в этом случае? У меня есть 9 параметров, поэтому я предполагаю одно из следующего:
public static string Concat(params Object[] args)
или
public static string Concat(params string[] values)
Но кто из них?
Q2. Почему генерируется исключение? Разве «null» не должен преобразовываться во что-то вроде «null» или «» (пустая строка)?
Большое спасибо!