是否有从静态方法调用非静态方法的方法

本文关键字:静态方法 方法 调用 是否 | 更新日期: 2023-09-27 18:08:09

public static void Person_home_phone_TextChanged(object sender, EventArgs e) { ... }

是否有办法从这个静态方法内部访问来自相同或另一个类的非静态方法?

我需要抓取Person_home_phone文本框中的文本,并将其保存到一个类数据成员。

是否有从静态方法调用非静态方法的方法

示例()->示例

您只需要创建type的实例,然后从static方法调用non-static

public class Example(){
    public static void StaticExample()
    {
        Example example = new Example();
        example.NonStatic();
    }
    public void NonStatic()
    {
    }
}

您需要有一个类的实例来调用非静态方法

解决方案#1:每次调用Car方法时,实例化一个新的Car实例。

 public static void DoSomething()
        {
            Car c = new Car();
            c.NonStaticMethod();
        }

解决方案# 2:将Car传递给方法。

 public static void DoSomething(Car c)
        {
            c.NonStaticMethod();
        }

解决方案# 3:

使用单例Car来支持静态方法。(如果可能从多个线程调用,您可能还需要锁定。注意,System.Windows.Forms.Timer并没有引入一个线程。

 public class Car
    {
        private static Car m_Singleton = new Car();
        public static void DoSomething()
        {
            m_Singleton.NonStaticMethod();
        } 

请注意,您没有解释您的内存问题与定时器。

实例方法(非静态)只能在该类实例的上下文中调用。你可以调用它,但你必须在静态方法中有那个类的对象

非静态方法需要类的实例。除非你已经传入了一个实例,或者在你的方法中创建了一个实例,否则你不能调用非静态方法,因为你不知道该方法应该在类的哪个实例上操作。

需要类class的实例来调用非静态方法