不能在同一类内的函数中使用变量。为什么 ?
-
28-09-2019 - |
题
我已经在类“ 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)
{
}
}
}
}
}
解决方案
隐式键入不适用于字段;它仅适用于本地变量。
一世 思考 这就是您真正的意图:
ApiContext context2 = new ApiContext(apiKey);
public Main(String GravatarURL, User user)
{
context2.Initialize(false);
...
}
在极不可能的情况下 ApiContext
是某种流利的接口 ApiContext.Initialize(bool)
返回a 不同的ApiContext
对象,这应该是您想要的:
ApiContext context2 = new ApiContext(apiKey).Initialize(false);
虽然如果您这样做会更清楚:
ApiContext context2;
public Main(String GravatarURL, User user)
{
context2 = new ApiContext(apiKey).Initialize(false);
...
}
不过,我真的怀疑。
其他提示
这不能编译。 var
-type变量声明不能仅在类级别,而只能是方法级别。
允许VAR与字段一起使用的技术问题。这就是为什么必须指定混凝土类型的原因。这是对埃里克·利珀特(Eric Lippert)的问题的解释:
不隶属于 StackOverflow