【问题标题】:Why is string[] recognized as just a string [closed]为什么字符串 [] 被识别为只是一个字符串 [关闭]
【发布时间】:2014-11-24 15:05:56
【问题描述】:

我试图将我的 XML 类与我的数学类分开。我正在阅读一个 xml 文件,以查找该人开始的时间并将其放入 string[] (我认为??)

    public static string elementStartWeek()
    {
        XmlDocument xmldoc = new XmlDocument();

        fileExistsWeek(xmldoc);

        XmlNodeList nodeStart = xmldoc.GetElementsByTagName("Start");

        int count2 = 0;
        string[] starttxtWeek = new string[count2];

            for (int i = 0; i <= nodeStart.Count; i++)
            {
                starttxtWeek[count2] = nodeStart[i].InnerText;
                count2++;
            }

        return starttxtWeek[count2];
    }

我想将数组带入我的数学类并将时间转换为十进制值进行计算。我的数学课似乎将其识别为字符串而不是数组。

    public static void startHour()
    {
        string weekStart = WidgetLogic.elementStartWeek();

        string startTime = "";

        if (1 == 1)
        {
            startTime = weekStart;
            MessageBox.Show(weekStart);
        }
    }

我本来希望 Math.cs 中的 weekStart 会引发错误。为什么这不会引发错误?

我正在 UI 对话框 DetailerReport 上调用 startHour()

    public DetailerReports()
    {
        InitializeComponent();

        Math.startHour();
    }

EDIT1这是 XML 结构

<?xml version="1.0" encoding="utf-8"?>
<Form1>
  <Name Key="11/19/2014 11:26:13 AM">
    <Date>11/19/2014</Date>
    <JobNum></JobNum>
    <RevNum></RevNum>
    <Task></Task>
    <Start>11:26 AM</Start>
    <End>11:26 AM</End>
    <TotalTime>55870781</TotalTime>
  </Name>
  .....

【问题讨论】:

  • 为什么会出现错误?您正在从该方法返回一个字符串并将其分配给字符串。
  • 我认为也许Frank Pytel 你应该阅读string &amp;&amp; string[] string && string[] 之间的区别

标签: c# xml winforms class-structure


【解决方案1】:

您的方法仅返回 string 而不是数组。这是第一个问题,第二个是你用 0 初始化数组。

public static string[] elementStartWeek()
    {
        XmlDocument xmldoc = new XmlDocument();

        fileExistsWeek(xmldoc);

        XmlNodeList nodeStart = xmldoc.GetElementsByTagName("Start");

        int count2 = 0;
        string[] starttxtWeek = new string[nodeStart.Count];

            for (int i = 0; i < nodeStart.Count; i++)
            {
                starttxtWeek[i] = nodeStart[i].InnerText;
                count2++;
            }

        return starttxtWeek;
    }

【讨论】:

  • 对于其他任何人来说,将for()循环更改为(int i = 0; i &lt; nodeStart.Count; i++) XmlNodeList nodeStart 长度。
【解决方案2】:

您只返回一个字符串,而不是它的数组。像这样改变你的功能:

public static string[] elementStartWeek()
{
    XmlDocument xmldoc = new XmlDocument();

    fileExistsWeek(xmldoc);

    XmlNodeList nodeStart = xmldoc.GetElementsByTagName("Start");

    string[] starttxtWeek = new string[nodeStart.Count];

        for (int i = 0; i < nodeStart.Count; i++)
        {
            starttxtWeek[i] = nodeStart[i].InnerText;
        }

    return starttxtWeek;
}

您还必须将数组容量设置为 nodeStart.Count。您不需要 count2 变量。

另外,我将for循环中的contition改为i &lt; nodeStart.Count

【讨论】:

  • Pawel,你仍然错过了他的代码在 new string[count2]; 逻辑方面是错误的......
  • @JohnBus​​tos 但这就是让它抛出错误的原因。上周我也与此作斗争。我必须将elementStartWeek() 定义为string[] 才能让智能感知继续执行。至少现在我可以继续调试。 :-D
  • @FrankPytel 修复 starttxtWeek 的维度,string[] starttxtWeek=new string[nodeStart.Count];
猜你喜欢
  • 2021-01-28
  • 1970-01-01
  • 2022-06-16
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 2015-04-30
  • 2020-03-27
  • 2021-07-01
相关资源
最近更新 更多