例子
public class ClassA
{
public ClassA(string someString){}
}
public class ClassB : ClassA
{
public ClassB(string someString):base(someString.ToLower()){}
}
我调用了继承的ClassB构造函数,传入了一个null。ToLower()会在传入null时抛出异常,我想在此之前检查是否为null。我该如何做到这一点?
例子
public class ClassA
{
public ClassA(string someString){}
}
public class ClassB : ClassA
{
public ClassB(string someString):base(someString.ToLower()){}
}
我调用了继承的ClassB构造函数,传入了一个null。ToLower()会在传入null时抛出异常,我想在此之前检查是否为null。我该如何做到这一点?
试试这个:
base(someString == null ? string.Empty : someString.ToLower())
试试这个
public class ClassA
{
public ClassA(string someString) { }
}
public class ClassB : ClassA
{
public ClassB(string someString) : base(someString == null ? "" : someString.ToLower()) { }
}
你已经得到了关于你的问题的答案,但我想补充一点,这种方法让我感到有些奇怪。难道确保输入是小写字母的责任真的应该由调用者承担吗?我肯定会在基类构造函数中进行这个检查和转换:
class Base
{
private string _someString;
public Base(string someString)
{
_someString = someString != null ? someString.ToLower() : null;
}
}
class Derived : Base
{
public Derived(string someString) : base(someString) { }
}
someString
是否为空,并相应地采取行动,否则你可以像这样做,但我认为它非常难以阅读。public class ClassB : ClassA
{
public ClassB(string someString):base((String.IsNullOrEmpty(someString)) ? String.Empty : someString.ToLower()){}
}