How to perform operations on an inherited base constructor in C #?

Example

public class ClassA
{
    public ClassA(string someString){}
}

public class ClassB : ClassA
{
    public ClassB(string someString):base(someString.ToLower()){}
}

I invoke the inherited ClassB constructor. I pass zero. ToLower () throws an exception in null. I want to check for zero before this happens. How can i do this?

+5
source share
5 answers

Simple Using the zero-bound operator :

public ClassB(string someString) : 
    base((someString ?? "").ToLower())
{
}

Or using the ternary operator

public ClassB(string someString) : 
    base(someString == null ? "" : someString.ToLower())
{
}

Even better, I suggest you add a no-arg constuctor to ClassBthat which will call base(string.Empty).

+7
source

Try the following:

base(someString == null ? string.Empty : someString.ToLower())
+6
source

public class ClassA
{
    public ClassA(string someString) { }
}

public class ClassB : ClassA
{
    public ClassB(string someString) : base(someString == null  ? "" :  someString.ToLower()) { }
}
+3

, , - . , ? :

class Base
{
    private string _someString;
    public Base(string someString)
    {
        _someString = someString != null ? someString.ToLower() : null;
    }
}

class Derived : Base
{
    public Derived(string someString) : base(someString) { }
}

Thus, the base class does not depend on how the derived class decides to pass an argument.

+2
source

You have to check if it is someStringnull in your base class and acts accordingly, otherwise you can do something like that, but I think it is very unreadable.

public class ClassB : ClassA
{
    public ClassB(string someString):base((String.IsNullOrEmpty(someString)) ? String.Empty : someString.ToLower()){}
}
+1
source

All Articles