2014-11-24 133 views
-4

我试图让我的XML类与我的Math类分开。我在读一个xml文件寻找什么时候开始的人,并把在一个字符串[](我想?)为什么字符串[]被识别为只是一个字符串

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发生错误。为什么这不会引发错误?

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

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> 
    ..... 
+4

为什么会期待一个错误?您从方法返回一个字符串并将其分配给字符串。 – 2014-11-24 15:08:17

+0

我认为也许'弗兰克Pytel'你应该读一下'string && string []'[string](http://msdn.microsoft.com/en-us/library/362314fe.aspx)&& [字符串[]'](http://msdn.microsoft.com/en-us/library/system.string%28v=vs.110%29.aspx) – MethodMan 2014-11-24 15:13:25

回答

6

你的方法返回只是一个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; 
    } 
+2

也为任何其他人来改变'for( )'循环读取'(int i = 0; i 2014-11-24 16:03:05

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变量。

此外,我改变了contition在for循环i < nodeStart.Count

+0

帕维尔,你仍然错过了'新字符串[count2];'逻辑...'他的代码是错误的... – 2014-11-24 15:10:35

+1

@JohnBus​​tos但是这是让它抛出错误的那个。我也在上周与这场战斗。我必须将'elementStartWeek()'定义为'string []'来获得智能感知。至少现在我可以继续调试。 :-D – 2014-11-24 15:12:30

+1

@FrankPytel修复starttxtWeek的维度,string [] starttxtWeek = new string [nodeStart.Count]; – Monah 2014-11-24 15:13:55

相关问题