类种静态方法的使用

Posted myloveblogs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类种静态方法的使用相关的知识,希望对你有一定的参考价值。

想法如下:

当前类A中使用另一个类B中的静态方法。这两个都不是静态类,可实例化。

没啥实质性的用处,做个思维拓展

 

    class Program
    {
        static void Main(string[] args)
        {
    
            Console.ReadKey();
        }
    }

    public class DefineClassA
    {

        public static void ClassA()
        {
            Console.WriteLine("DefineClassA-ClassA");
        }
    }

    public class DefineClassB
    {

        public static void ClassB()
        {
            Console.WriteLine("DefineClassB-ClassB");
        }
    }

如上,如果想在DefineClassA中调用ClassA那么直接 DefineClassA.ClassA 就好了,那如果想用 DefineClassA 来使用ClassB呢?



第一种:
 class Program
    {
        static void Main(string[] args)
        {
            DefineClassA.ClassA();
            DefineClassA.ClassB();

            Console.ReadKey();
        }
    }

    public class DefineClassA
    {
        public static void ClassA()
        {
            Console.WriteLine("DefineClassA-ClassA");
        }

        public static void ClassB()
        {
            DefineClassB.ClassB();
        }

    }

    public class DefineClassB
    {

        public static void ClassB()
        {
            Console.WriteLine("DefineClassB-ClassB");
        }
    }

第二种:

    class Program
    {
        static void Main(string[] args)
        {
            DefineClassA.ClassA();
            DefineClassA.ClassB();

            Console.ReadKey();
        }
    }

    public class DefineClassA: DefineClassB
    {
        public static void ClassA()
        {
            Console.WriteLine("DefineClassA-ClassA");
        }  
    }

    public class DefineClassB
    {
        public  static void ClassB()
        {
            Console.WriteLine("DefineClassB-ClassB");
        }
    }

第三种:

    class Program
    {
        static void Main(string[] args)
        {
            DefineClassA.ClassA();
            var type = DefineClassA._DefineClassB.GetType();
            var GetMethod = DefineClassA._DefineClassB.GetType().GetMethod("ClassB");
            GetMethod.Invoke(type, null);


            Console.ReadKey();
        }
    }

    public class DefineClassA
    {
     
        public static DefineClassB _DefineClassB = new DefineClassB();
        public static void ClassA()
        {
            Console.WriteLine("DefineClassA-ClassA");
        }
    }

    public class DefineClassB
    {
        public static void ClassB()
        {
            Console.WriteLine("DefineClassB-ClassB");
        }
    }

第四种:

    class Program
    {
        static void Main(string[] args)
        {
            BaseClassA baseClassA = new BaseClassA();
            BaseClassB baseClassB = new BaseClassB();
            baseClassA.Print(baseClassB);
            Console.ReadKey();
        }
    }


    public interface interfaceBase
    {
        void PrintBase();
    }
    public class BaseClassA : interfaceBase
    {
        public BaseClassA() { }
        public void PrintBase()
        {
            Console.WriteLine("BaseClassA");
        }
        public void Print(interfaceBase interfaceBase)
        {
            interfaceBase.PrintBase();
        }
    }

    public class BaseClassB : interfaceBase
    {
        public BaseClassB() { }
        public void PrintBase()
        {
            Console.WriteLine("BaseClassB");
            SayStatic();
        }

        public static void SayStatic()
        {
            Console.WriteLine("BaseClassB-SayStatic");
        }
    }

 



 

以上是关于类种静态方法的使用的主要内容,如果未能解决你的问题,请参考以下文章

片段中的网格视图

支持动态或静态片段的不同屏幕尺寸?

无法对非静态方法 getAssets() 进行静态引用 - 无法在片段中播放音频

从片段调用活动方法

从活动中调用片段中的非静态方法?

C#常用代码片段备忘