2

クラス「Main」で「context2」という名前の変数を宣言しました。しかし、関数'Main_Load'内で変数を使用することはできません。私は何を間違っているのですか?

using System;
using System.Windows.Forms;
using Soapi;
using Soapi.Domain;

namespace SO_Console_Client
{
    public partial class Main : Form
    {
        const string apiKey = "*************";
        var context2 = new ApiContext(apiKey).Initialize(false);
        public Main(String GravatarURL, User user)
        {
            InitializeComponent();
            pictureBox1.Load(GravatarURL);  //Loads the Gravatar image from the url

            //set the reputation details
            lblRep.Text = String.Format("Reputation: {0}", user.Reputation);

            //Sets the badge details
            lblBadge.Text = String.Format("Badges: gold={0} silver={1} bronze={2}", user.BadgeCounts.Gold, user.BadgeCounts.Silver, user.BadgeCounts.Bronze);

            groupBox1.Text = user.DisplayName.ToString();
        }

        private void Main_Load(object sender, EventArgs e)
        {
            Soapi.Queries.QuestionsUnansweredQuery query = context2.Official.StackOverflow.Questions.Unanswered;
            foreach (Question q in query)
            {
                try
                {
                    Console.WriteLine(q.Title.ToString());
                    //Console.WriteLine(q.Body.ToString());
                }
                catch (System.NullReferenceException ex)
                {

                }

            }

        }
    }
}
4

3 に答える 3

4

暗黙的な入力はフィールドでは機能しません。ローカル変数でのみ機能します。

これがあなたの本当の意図だと思います:

ApiContext context2 = new ApiContext(apiKey);

public Main(String GravatarURL, User user)
{
   context2.Initialize(false);
   ...
}

別のオブジェクトを返すApiContextある種の流暢なインターフェイスである可能性が非常に低い場合、これはあなたが望むものでなければなりません:ApiContext.Initialize(bool)ApiContext

ApiContext context2 = new ApiContext(apiKey).Initialize(false); 

あなたがした場合、それははるかに明確になりますが:

ApiContext context2;

public Main(String GravatarURL, User user)
{
   context2 = new ApiContext(apiKey).Initialize(false);
   ...
}

しかし、私はそれを本当に疑っています。

于 2010-11-02T13:49:23.597 に答える
1

これはコンパイルできません。 var-type 変数の宣言は、クラス レベルではできません。メソッド レベルでのみ可能です。

于 2010-11-02T13:50:25.593 に答える
1

var をフィールドで使用できるようにすることには、技術的な問題があります。これが、具象型を指定する必要がある理由です。Eric Lippert による問題の説明は次のとおりです。

フィールドに var がない理由

于 2010-11-02T13:52:40.310 に答える