[英]Passing an implicit typed variable: “var” to a function in C# and returning an array?
我正在編寫一個函數來分解我的main()。 具體來說,在此函數中,我將傳遞對象的“ var”或隱式實例。 1.但是編譯器對此不滿意2。 同樣,對於從此函數返回數組也不滿意。
錯誤消息
public class string [] xml_to_array(string tag_name, var select_range, XNamespace xmlns)
{ string [] ret_array=select_range.Descendants(xmlns+ tag_name) .Select(elem => elem.Value).ToArray(); return ret_array; }
“ var select_range”可以是LINQ / SQL stmt實例的IEnumerable:
IEnumerable<XElement> select_range= from result in doc.Descendants(xmlns+ "Assessment")
where result.Element(xmlns + "Location").Value.ToLower().Contains(r)
select result;
或者可以是XDOCUMENT類型:
XDocument select_range = XDocument.Load("C:/Users/jake_lane/Documents/parser/ex.xml");
為什么不將參數類型更改為IEnumerable<XElement>
:
public string [] xml_to_array(string tag_name, IEnumerable<XElement> select_range, XNamespace xmlns)
並更改:
XDocument select_range = XDocument.Load
("C:/Users/jake_lane/Documents/parser/ex.xml");
至:
IEnumerable<XElement> select_range = XDocument.Load
("C:/Users/jake_lane/Documents/parser/ex.xml")
.Descendants();
您不能將var用作方法中的參數。 編譯器必須能夠確定要交換var的數據類型。
您也不能在方法聲明中包含class關鍵字。
通用答案:創建兩種具有不同簽名的方法,一種使用IEnumerable,另一種使用XDocument。 如果兩者相似,則可以從更特定的版本中調用更通用的版本,或者將一種類型轉換為另一種類型,然后返回傳入新類型的另一種類型的調用。
特定於XDocument和IEnumberable:當然,除非可以將類型(XDocument)隱式轉換為其他類型(IEnumberable),然后僅在簽名中使用更具體的類型(IEnumberable)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.