这就是我所拥有的。
public static void Person_home_phone_TextChanged(object sender, EventArgs e) { ... }
有没有办法从静态方法中访问同一个或另一个类的非静态方法?
我需要抓取Person_home_phone文本框中的文本并将其保存到类数据成员中。
答案 0 :(得分:18)
示例() - >实施例
您只需要创建type
的实例,然后从non-static
方法调用static
。
public class Example(){
public static void StaticExample()
{
Example example = new Example();
example.NonStatic();
}
public void NonStatic()
{
}
}
答案 1 :(得分:8)
您需要有一个类的实例来调用非静态方法。
答案 2 :(得分:2)
解决方案#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的内存问题。很可能有解决这个潜在问题的方法。
答案 3 :(得分:0)
你应该有一个对象来访问它的方法。
静态不属于对象。它们属于类声明。
答案 4 :(得分:0)
实例方法(vel。非静态)只能在该类的实例的上下文中调用。所以你可以调用它,但你必须在静态方法中的某个地方提供该类的对象。
答案 5 :(得分:0)
非静态方法需要类的实例。除非您已经传入实例,或者在方法中创建了一个实例,否则不能调用非静态方法,因为您不知道该方法应该对哪个类实例进行操作。
您需要类类的实例来调用非静态方法。