有没有一种方法可以将我的函数组织成子类或某种形式的嵌套容器?

时间:2018-09-04 13:55:08

标签: c#

所以我试图将我的函数组织到嵌套类中,这样我可以像“ Player.Trigger_Functions.TakeDamage()”那样调用它们,而不是这样调用:“ Player.TakeDamage()”。我想以我建议的方式调用函数是一种效率较低的方法,但它将有助于将函数分为不同的类别,同时保留在同一文件中。

这是一些测试代码,但是我无法在线编译它以查看它是否有效。 (尽管某些功能位于单独的容器中,但我认为这是个问题,但它们必须能够彼此交互)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


public class Program
{
    public class meme{

        public int thicc = 0;

        public oof nest1 = new oof();
        public watermelone nest2 = new watermelone();

        public class oof : meme
        {

            public void here(){
            thicc++;
            }
            public void call(){
                 nest2.here();
                 System.Console.WriteLine("oof" + thicc);
            }

        }

        public class watermelone : meme
        {

            public void here(){
                thicc++;
            }
            public void call(){
                 nest1.here();
                 System.Console.WriteLine("watermelone" + thicc);
            }

        }



}



public static void Main(){
            meme me = new meme();

            me.nest1.call();//adding 1
            me.nest2.call();//adding 1
            System.Console.WriteLine("here is the current thicc value of the me class:" + me.thicc);


    }
}

是的,所以这段代码根本不起作用,我没有花太多精力,但是您知道我要完成的事情。

1 个答案:

答案 0 :(得分:1)

您可以使用界面将类的功能分为相关的组。

从此:

class Person
{
    void sayHello() { }
    void sayGoodbye() { }
    void walkForward() { }
    void walkBackward() { }
}

重构为此:

interface ISpeak
{
    void sayHello();
    void sayGoodbye();
}

interface IWalk
{
    void walkForward();
    void walkBackward();
}

class Person : ISpeak, IWalk
{
    void ISpeak.sayHello() { }
    void ISpeak.sayGoodbye() { }
    void IWalk.walkForward() { }
    void IWalk.walkBackward() { }
}

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person();
        IWalk walk = person;
        ISpeak speak = person;
        speak.sayHello();
        walk.walkForward();
    }
}