【问题标题】:how to return values from one class to another?如何将值从一个类返回到另一个类?
【发布时间】:2011-11-14 04:01:44
【问题描述】:

我正在制作一个包含三个类的程序:

  1. 输出类从其他两个类接收数据,写入两个新字符串,结合特殊格式到另一个字符串并输出
  2. AidaF 类有一个方法可以每秒返回一个值(一个字符串)
  3. GmailF 类有一个方法可以每分钟左右返回一个值(一个字符串)

所以我厌倦了使用return string; 将第 2 类和第 3 类的数据返回到第一个类,但这只是将值返回到当前类,而不是第一个类。

这是我正在处理的代码,不过已经精简了很多。但基本都在那里。

namespace Final
{
    public class Output
    {
        public static void Main()
        {
            Console.WriteLine(gml + aida);
        }
    }

    public class AidaF
    {
        private static System.Timers.Timer aTimer;

        public static void AMain()
        {
            aTimer = new System.Timers.Timer(1000);
            aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
            aTimer.Interval = 1000;
            aTimer.Enabled = true;
        }


        private static void OnTimedEvent(object source, ElapsedEventArgs e)
        {
            ...
            reader.ReadToFollowing("value");
            aida.Append(reader.ReadElementContentAsString()).Append(",");
            return aida;
            ...
        }
    }

    public class GmaillF
    {
        private static System.Timers.Timer gTimer;

        public static void GMain()
        {
            gTimer = new System.Timers.Timer(200000);
            gTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent1);
            gTimer.Interval = 200000;
            gTimer.Enabled = true;
        }

        private static void OnTimedEvent1(object source, ElapsedEventArgs e)
        {
            CheckMail();
        }

        public static string CheckMail()
        { 
          ...
          gml.Append(reader.ReadElementContentAsString()).Append(",");
          return gml;
          ...
        }
    }
}

【问题讨论】:

  • 我不太明白你在问什么,但你似乎想将类视为过程/函数......实际上或语义上它们确实不是。 :-P
  • 我想从第 2 类和第 3 类返回值,以便第 1 类可以使用它们。
  • 您是否正在尝试重新发明“可观察集合”模式?也就是说,集合通常被认为是您一次“提取”一件事的信息,例如客户列表。一个可观察的集合推送信息给对它感兴趣的消费者。
  • 类不是“返回”值的东西;类代表事物的种类。 “报纸”类代表所有报纸对象的类。 方法返回值。
  • 这是我被告知的地方:stackoverflow.com/questions/7314638/…

标签: c# class return


【解决方案1】:

您需要从调用类调用公开的静态方法才能使其正常工作,例如,您的 main 看起来更像这样:

public static void Main() {
Console.WriteLine(GmailF.CheckMail() + AidaF.OnTimedEvent());
}

我只是猜测 CheckMail 和 OnTimedEvent 是您要返回的字符串。 CheckMail 和 OnTimedEvent 都必须是公共静态字符串才能使上述工作。

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 2021-06-25
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多