我有同义词,下面是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
namespace Examples.NET
{
public class Synonym
{
private string _kata;
private List<string> _sinonim;
public String Kata
{
get { return _kata; }
}
public List<string> Sinonim
{
get
{
return _sinonim;
}
}
public Synonym(string kata)
{
_kata = kata;
List<string> _sinonim = new List<string>();
XDocument xDoc = XDocument.Load("http://www.stands4.com/services/v2/syno.php?uid=2319&tokenid=LSRyvL5mGsHpEi4&word=" + kata);
var sinonim = from isi in xDoc.Descendants("result")
select new
{
sinom = isi.Descendants("synonyms").First().Value
};
foreach (var s in sinonim)
{
_sinonim.Add(s.sinom);
}
}
}
}
在主程序中,我的代码如下:
Synonym Syn = new Synonym("buy");
System.Console.WriteLine(Syn.Kata);
var sinom = from s in Syn.Sinonim
select s;
foreach (var item in sinom)
{
System.Console.WriteLine("data: " + item);
}
但是,有错误:在主程序中:“从S中......选择S” ===========&gt;&gt;值不能为空。 AND参数名称:source
我猜在课堂上有错误
public List<string> Sinonim
{
get{ return _sinonim;}
}
答案 0 :(得分:1)
这表明您的私人列表变量永远不会被分配,而不是。
List<string> _sinonim = new List<string>();
这会隐藏私有实例,因为名称相同。将构造函数中的那一行更改为this并且它应该可以正常工作
_sinonim = new List<string>();