C# Override with different parameters?

后端 未结 5 1520
天命终不由人
天命终不由人 2020-12-11 16:29

Here is an example of what I am looking to do.

public class A
{
    public virtual void DoSomething(string a)
    {
      // perform something
    }
}
public         


        
5条回答
  •  暖寄归人
    2020-12-11 16:41

    When overriding a virtual method, you must keep the original "contract" of the method, which in your case is a string a variable.

    In order to do what you want, you can create a virtual overload which takes two strings:

    public class A
    {
        public virtual void DoSomething(string a)
        {
          // perform something
        }
        public virtual void DoSomething(string a, string b)
        {
          // perform something
        }
    }
    
    public class B : A
    {
        public override void DoSomething(string a, string b)
        {
          // perform something slightly different using both strings
        }
    }
    

    If what you want is to accept N strings in your method, you can use the params keyword:

    public class A
    {
        public virtual void DoSomething(params string[] allStrings)
        {
          // Do something with the first string in the array
          // perform something
        }
    }
    

提交回复
热议问题