【问题标题】:List of datatype variable in class won't be updated类中的数据类型变量列表不会更新
【发布时间】:2012-02-27 21:47:14
【问题描述】:

我创建了一个具有 List 作为属性的类 这是代码

public class ScreenEventNTF
{
    //property
    public List<string> list_event_string { get; set; }

    //constructor
    public ScreenEventNTF(blah blah)
    {
       list_event_string = new List<string>();
    }

    // the not-working method
    public void AddToStringTodraw(string string_inp)
    {
        list_event_string.Add(string_inp);

    }

}

在主课上我做了类似的事情

ScreenEventNTF notifier = new ScreenEventNTF(blah blah);
notifier.AddToStringTodraw("Fabulous");

我尝试在 notifier.list_event_string 中写入所有字符串,但似乎没有 将任何值存储在列表中

这是根据评论的代码。

foreach (string text in notifier.list_event_string)
 spriteBatch.DrawString(font_test, text , 
                vector_mouse, Color.White, 0f, Vector2.Zero, 1.0f, SpriteEffects.None, 1.0f);

我做错了什么??

请帮助我,任何帮助将不胜感激。

【问题讨论】:

  • 您显示的代码没有说明问题。介意添加一个实际产生问题的示例吗?
  • 尝试在您的 AddToStringTodraw 方法上放置一个断点,并确保它已正确添加到列表中,并且您打印的内容就是您认为打印的内容。
  • 如何从列表中读取数据?
  • 除了您的构造函数参数外,您的代码可以正常工作。我能够让您的列表输出计数,如下所示pastebin.com/qNdKt834
  • 我正在花时间再次查看代码。我开始线程是因为我认为这是一个问题,因为参考类型问题或类似的东西。感谢所有的答案......现在我看到问题应该来自其他部分。

标签: c# list class


【解决方案1】:

您添加到列表的方式应该有效,我认为它确实有效,但问题是当您绘制字符串时:

  1. 在屏幕外的位置绘图:检查 vector_mouse 中的值
  2. 您正在绘制白色文本。背景对比度够不够?

如果确实调用了该方法并且列表中没有值,则可以说该方法不起作用。您可以只用调试器确认,在 foreach 之前设置一个断点(字符串...)

另外,如果您不使用缩放、旋转,正如我从您的参数中看到的那样,您可以使用 DrawString 方法的重载:DrawString(SpriteFont, string, Vector2, Color)

最后,如果 List 字段是公开的,为什么要在单独的方法中公开添加功能?除非将来封装会发生变化,否则这不是必需的。

【讨论】:

    【解决方案2】:

    您究竟是如何遍历列表的?需要查看打印List对象中元素的代码。

    【讨论】:

      猜你喜欢
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-15
      相关资源
      最近更新 更多