请参阅GitHub
static void Main(string[] args)
{
// do something...
service.Feedback += new FeedbackService.OnFeedback(service_Feedback);
}
static void service_Feedback(object sender, Feedback feedback)
{
Console.WriteLine(string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", feedback.Timestamp, feedback.DeviceToken));
}
如何在控制台中显示输出而不是如何将其存储到变量中,以便它可以在主程序中?
答案 0 :(得分:2)
嗯,你需要声明变量:
static Feedback lastFeedback;
然后只需在方法中指定它:
static void service_Feedback(object sender, Feedback feedback)
{
lastFeedback = feedback;
}
您可能需要考虑将其设为List<Feedback>
,而不是仅存储收到的最后反馈。
请注意,如果涉及多个线程,则需要格外小心 - 特别是如果您正在使用集合。 (List<T>
不是线程安全的。)
当然,你没有 使用事件处理程序的方法:
service.Feedback += (sender, feedback) => lastFeedback = feedback;
这取决于你对lambda表达的舒适程度。即使你不想这样内联,你仍然可以使用方法组转换使现有的处理程序订阅更简单:
service.Feedback += service_Feedback;
答案 1 :(得分:1)
使用lambda:
class Program
{
static string feedback; // string to store formatted string, use type Feedback to store the variable itself
static void Main(string[] args)
{
service.Feedback += (s,f) => feedback = String.Format("Feedback - Timestamp: {0} - DeviceId: {1}", f.Timestamp, f.DeviceToken);
}
}
或经典:
static void service_Feedback(object sender, Feedback f)
{
feedback = string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", f.Timestamp, f.DeviceToken);
}
这将只存储最后的反馈。
答案 2 :(得分:0)
static void Main(string[] args)
{
// do something...
service.Feedback += new FeedbackService.OnFeedback(service_Feedback);
}
static StringBuilder sb = new StringBuilder();
static void service_Feedback(object sender, Feedback feedback)
{
sb.AppendLine(string.Format("Feedback - Timestamp: {0} - DeviceId: {1}", feedback.Timestamp, feedback.DeviceToken));
}