Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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#_Class_Unity3d_Subclass_Nested - Fatal编程技术网

C# 如何切换类嵌套?

C# 如何切换类嵌套?,c#,class,unity3d,subclass,nested,C#,Class,Unity3d,Subclass,Nested,我终于明白了类派生是如何工作的。。。它的工作原理和我最初的想法完全相反 using UnityEngine; using System.Collections; public class TestScript : MonoBehaviour { Class5 A = new Class5(); Class1 B = new Class1(); void Start(){ A.Function5(); // 5 A.Function1();

我终于明白了类派生是如何工作的。。。它的工作原理和我最初的想法完全相反

using UnityEngine;
using System.Collections;

public class TestScript : MonoBehaviour {
    Class5 A = new Class5();
    Class1 B = new Class1();
    void Start(){
        A.Function5(); // 5
        A.Function1(); // 1
        B.Function5(); // ERROR `Class1' does not contain a definition for `Function5' and no extension method `Function5' of type `Class1' could be found (are you missing a using directive or an assembly reference?)
        B.Function1(); // 1
    }
}

public class Class1{
    public void Function1(){
        Debug.Log("1");
    }
}
public class Class2 : Class1{
    public void Function2(){
        Debug.Log("2");
    }
}
public class Class3 : Class2{
    public void Function3(){
        Debug.Log("3");
    }
}
public class Class4 : Class3{
    public void Function4(){
        Debug.Log("4");
    }
}
public class Class5 : Class4{
    public void Function5(){
        Debug.Log("5");
    }
}
Q1在这个特定代码中,我将如何做:

  • 无法访问类1、2、3、4
  • 但只能访问Class5,并通过它访问其他类中的所有其他函数
Q2我如何制作这样的东西:

public class Class5 : Class4, Class3, Class2, Class1{
    public void Function5(){
        Debug.Log("5");
    }
}

因此,类4不能读取类3但是只有类5可以读取所有其他类?

您可能在所有
Function1..Function4
方法上查找
protected
,而不是
public
,因此只有
Class5
可以使用函数1-4


请注意,在C#类中,类只能有一个基类,如
Class5:Class4{}
Class5
仍将看到其所有基类中受保护的函数1-4)。

更喜欢组合而不是继承。这使得依赖关系图更容易理解。这就是说,如果您需要在.Net中进行多重继承,请使用接口而不是类型继承。哇,接口是什么?gr8现在我唯一缺少的是如何对公共隐藏类1、2、3、4?尽管我喜欢调用类1,但我无法访问Func1