代码之家  ›  专栏  ›  技术社区  ›  Nwerx_user

在C#中,如何在不使用static关键字的情况下使用类外的方法?

  •  0
  • Nwerx_user  · 技术社区  · 4 月前

    我是C#编程的初学者, 我想做的是在类外使用一个方法,但方法是不可访问的,没有static关键字我无法做到这一点,我也不想使用static关键字,因为我正在练习一条实现我最初想法的道路。

    在C#中可能没有办法做到这一点,你可能会想,为什么我认为我可以在不使用static关键字的情况下做到这一点将是因为我在C#之前学习了一些python,在我看来,我认为我也可以很容易地在C#中做到这一步,而不需要额外的编码。

    以下是示例代码:

    public class ExampleClass
    {
    
        public string message = "Hello World";
        public void Display()
        {
            Console.WriteLine("Hello World");
        }
    
        public class Class1
        {
            public void TestMethod()
            {
                // I want to use message variable
                // and Display() method here.
            }
        }
    }
    
    
    1 回复  |  直到 4 月前
        1
  •  5
  •   gunr2171    4 月前

    让我们简化一下:

    public class Foo
    {
        public void A() {}
        public static void B() {}
    }
    
    public static class Program
    {
        public static void Main()
        {
            // writing code here...
        }
    }
    

    我们想调用两种方法: A B 一个是静态的,另一个不是静态的——它被称为“实例成员”。

    打电话 B 因为它是静态的,所以是这样的:

    Foo.B();
    

    为了拨打电话 A. ,我们必须做一个 例子 Foo 类。

    Foo f = new Foo();
    f.A();
    

    只有 在C#中调用方法有两种方式:静态地通过它的类型,或者作为变量的实例。

    如果你想使用 ExampleClass.message 从内 Class1.TestMethod ,那么您需要有一个 ExampleClass type(在 TestMethod 方法或作为成员 Class1 类),或 示例Class.message 必须是静态的。

    我想你会想真正研究一下C#中的“静态”是什么意思。请参阅 a good SO post 以及 C# documentation .

    有趣的事实,事实上 班级1 “嵌套”在里面 示例类 与没有嵌套的情况相比,没有给予它任何特殊待遇。它所做的只是创建类型名称 ExampleClass.Class1 .