【问题标题】:Calling a Non static method from a static method in C#从 C# 中的静态方法调用非静态方法
【发布时间】:2015-12-08 02:02:38
【问题描述】:

我在同一个 TSDK 类中有以下代码

public Int16 Write_To_Consol_dr(string ConsolCmd)
        {
        textBoxConsol.AppendText(ConsolCmd + "\n");
        textBoxConsol.AppendText("Tena_Consol>");
        }

public static Int16 Write_To_Console(string ConsolCmd)
        {
            TSDK.FormMain Clasi = new TSDK.FormMain();
            Clasi.Write_To_Consol_dr(ConsolCmd);
        }

我在文本框中没有看到任何内容。 谢谢

【问题讨论】:

  • 你在哪里展示 Clasi?
  • Clasi 只是 Write_To_Consol_dr() 的一个实例
  • 是的,但是您没有显示它,那么您希望如何看到 ConsolCmd 文本?
  • textBoxConsol 是一个开放的文本框,我不确定我是否需要一直执行 show()。当我在同一个类的非静态方法中时,我可以写入文本框,它会显示文本。
  • 您正在 Write_To_Console 中实例化一个新的 TSDK.FormMain,顺便创建一个新的 textBoxConsol 实例。如果要在现有的 textBoxConsol 中查看 ConsolCmd,则需要使用现有的 TSDK.FormMain 实例,而不是创建新实例。

标签: c# static textbox


【解决方案1】:

静态类与非静态类基本相同,但有一个区别:静态类不能被实例化。换句话说,您不能使用 new 关键字来创建类类型的变量。因为没有实例变量,所以您可以使用类名本身来访问静态类的成员。 (参考https://msdn.microsoft.com/en-us/library/79b3xss3.aspx

This one也可以帮你

【讨论】:

    【解决方案2】:

    一些代码来解释。 这不是好的实践代码,但它会实现您的要求。

    public class FormMain : Form {
        public static FormMain Instance = new FormMain();
        public void WriteToConsoldr(string consolCmd)
        {
            textBoxConsol.AppendText(consolCmd + "\n");
            textBoxConsol.AppendText("Tena_Consol>");
        }
    
        public static void WriteToConsole(string consolCmd)
        {
            Instance.Write_To_Consol_dr(consolCmd);
        }
    }    
    
    public class OtherClass 
    {
        public void SomeMethod()
        {
            FormMain.WriteToConsole("Some text");
            // Or access the instance method directly
            FormMain.Instance.WriteToConsoldr("Some text");
        }
    }
    

    【讨论】:

    • 我试图通过 FormMain.Instance.Write_To_Console_dr(Globals.CommandOut); 发送信息但是textBox什么都没有显示,是不是textBox不属于我们创建的实例?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    相关资源
    最近更新 更多