0

以下に同義語のクラスがあります。

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);
}

しかし、エラーがあります:IN MAIN PROGRAM: "FROM S IN ..... SELECT S"===========>>値をnullにすることはできません。ANDパラメータ名:ソース

クラスにエラーがあると思います

  public List<string> Sinonim 
  {
   get{ return _sinonim;}
  }
4

1 に答える 1

1

これは、プライベートリスト変数が割り当てられていないことを示していますが、割り当てられていません。

List<string> _sinonim = new List<string>();

名前が同じであるため、これによりプライベートインスタンスが非表示になります。コンストラクターのその行をこれに変更すると、機能するはずです

_sinonim = new List<string>();

于 2012-11-17T10:46:56.513 に答える