Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法只向方法添加代码而不在c#中完全重写它?_C#_Overriding_Virtual - Fatal编程技术网

有没有办法只向方法添加代码而不在c#中完全重写它?

有没有办法只向方法添加代码而不在c#中完全重写它?,c#,overriding,virtual,C#,Overriding,Virtual,有没有办法只从子类向方法添加代码,而不完全像c#中的“override”+“virtual”那样重写它。 我发现自己在重写方法中编写了一些重复的代码。而且不确定该怎么办您可以使用不同机制的override和virtual。比如说, class MyBase { private int MyVar; public virtual void DoStuff(int i , int j) { MyVar = i + j;

有没有办法只从子类向方法添加代码,而不完全像c#中的“override”+“virtual”那样重写它。
我发现自己在重写方法中编写了一些重复的代码。而且不确定该怎么办

您可以使用不同机制的override和virtual。比如说,

class MyBase
    {
        private int MyVar;
        public virtual void DoStuff(int i , int j)
        {
            MyVar = i + j; //This is your common code which is added in base class

        }
    }


    class OverridClass : MyBase
    {
        private int MyNewCount;
        public override void DoStuff(int i, int j)
        {
            MyNewCount = i + j;
            base.DoStuff(i, j); //This is how you reuse your common code and write the code which is more specific to this method

        }
    }`

在受保护的基类中重构帮助器方法中的公共代码。谢谢,我想出了一个解决方案。原来我没在想。在override方法中,我可以只编写base.MethodName()。然后在以下内容之前或之后添加一些代码:)