【发布时间】:2011-06-02 22:45:37
【问题描述】:
这里有几个类:
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();
}
我在“ToString()”方法中得到 NullReference 异常(项目变量的每个属性都是空的)。
问题:
第一季度。在这种情况下会调用什么重载的 string.Concat?我有 9 个参数,所以我猜是以下之一:
public static string Concat(params Object[] args)
或
public static string Concat(params string[] values)
但是他们中的哪一个?
第二季度。为什么会产生异常? 'null'不应该被转换成'null'或“”(空字符串)之类的东西吗?
非常感谢!
【问题讨论】:
-
您能否发布完整的回溯以及可能导致其抛出的一些示例执行?我猜你在三元运算符内的
item.ToString或Price.ToString()或base.ToString()上遇到了空异常,而Concat本身不是在对空进行吐槽。
标签: .net string concatenation string-concatenation