繁体   English   中英

有没有办法从静态方法调用非静态方法?

[英]Is there a way to call a non-static method from a static method?

这就是我所拥有的。

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的新实例。

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

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

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

解决方案#3:

使用单件汽车来支持静态方法。 (如果有可能来自多个线程的调用,则可能还需要锁定。请注意,System.Windows.Forms.Timer不会引入线程。)

 public class Car
    {
        private static Car m_Singleton = new Car();

        public static void DoSomething()
        {
            m_Singleton.NonStaticMethod();
        } 

请注意,您尚未解释Timer的内存问题。 很可能存在解决该潜在问题的方法。

您应该有一个对象来访问其方法。

静力学不属于对象。 它们属于类声明。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM