再帰関数を作成するたびに、void を返して ref パラメーターを使用することになるようです。
結果リストを返すだけの関数を書けるようになりたいです。
答えが非常に単純である場合はお詫び申し上げます-何らかの理由で私にはわかりません。
これが私が今持っているコードです:
public static void GetResrouces(string startURL, ref List<XDocument> result)
{
var doc = XDocument.Parse(GetXml(startURL)); // GetXml ommitted - returns xml string
var xs = new XmlSerializer(typeof(resourceList));
var rdr = doc.CreateReader();
if (xs.CanDeserialize(rdr))
{
var rl = (resourceList)xs.Deserialize(doc.CreateReader());
foreach (var item in rl.resourceURL)
{
GetResrouces(startURL + item.location, ref result);
}
}
else
{
result.Add(doc);
}
}
public partial class resourceList
{
private resourceListResourceURL[] resourceURLField;
private string locationField;
/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("resourceURL")]
public resourceListResourceURL[] resourceURL
{
get
{
return this.resourceURLField;
}
set
{
this.resourceURLField = value;
}
}
/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "anyURI")]
public string location
{
get
{
return this.locationField;
}
set
{
this.locationField = value;
}
}
}
プロトタイプに書き直すことができるかどうか知りたいです:
public static List<XDocument> GetResources(string startURL)