代码之家  ›  专栏  ›  技术社区  ›  Vishnu Pradeep

不能在同一类内的函数中使用变量声明的类。为什么?

  •  2
  • Vishnu Pradeep  · 技术社区  · 14 年前

    我在“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)
                    {
    
                    }
    
                }
    
            }
        }
    }
    
    3 回复  |  直到 7 年前
        1
  •  4
  •   Ani    14 年前

    隐式类型不适用于字段;它只适用于局部变量。

    认为

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

    在极不可能的情况下 ApiContext 是一种流畅的界面 ApiContext.Initialize(bool) 返回 顶端文本 对象,这应该是您想要的:

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

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

    不过,我真的很怀疑。

        2
  •  1
  •   Jesse C. Slicer    14 年前

    无法编译。 var -类型变量声明不能在类级别,只能在方法级别。

        3
  •  1
  •   Michael Goldshteyn    14 年前