非静态字段、方法或属性需要对象引用
本文关键字:属性 对象引用 方法 静态 字段 | 更新日期: 2023-09-27 18:18:36
嘿,我想让下面的代码工作,但目前我得到这个错误:
非静态字段、方法或对象引用是必需的属性"fetchFeedData.Program.txtUsername"
代码是:
class Program
{
private string appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "''feedReader";
internal static extern IntPtr GetCurrentProcess();
private WebClient imageClient;
private String txtUsername = "xxxxxx@xxxxxx.com";
private String txtPassword = "xxxxxxx";
private Boolean chkDownVideo = false;
private Boolean chkIsHD = false;
[STAThread]
static void Main(string[] args)
{
bool isNew;
Mutex mtx = new Mutex(true, "FacebookNewsfeedReader", out isNew);
if (isNew) {
InitializeXul();
LoadSettings();
} else
MessageBox.Show("Already one instance is running.....", "Facebook Newsfeed Reader");
}
static void LoadSettings()
{
imageClient = new WebClient();
imageClient.Headers.Add("Accept", "image/webp,*/*;q=0.8");
imageClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36");
imageClient.Headers.Add("Referer", "https://www.zzzzzzzz.com/");
imageClient.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
imageClient.Headers.Add("Accept-Language", "en-US,en;q=0.8");
string[] vals = data.Split(''n');
if (vals.Length < 3)
return;
txtUsername = vals[0];
txtPassword = vals[1];
txtBrowseFolder = vals[2];
chkDownVideo = bool.Parse(vals[3]);
chkIsHD = bool.Parse(vals[4]);
}
在下面几行显示同样的错误:
imageClient = ...
imageClient.Headers.Add(...
imageClient.Headers.Add(...
imageClient.Headers.Add(...
imageClient.Headers.Add(...
imageClient.Headers.Add(...
appDataPath + ...
txtUsername = ...
txtPassword = ...
txtBrowseFolder = ...
chkDownVideo = ...
chkIsHD = ...
我搜索了一下,发现了持续的建议,以确保两者具有相同的函数调用(静态,void等),但这似乎并没有解决问题。
任何帮助将是伟大的!
我同意其他评论者的观点——这里真正缺少的是对static关键字的含义以及对实例化对象的含义的理解。
这里的具体问题是,你的Program
类的字段需要一个实例才能被访问(Program
和它的字段不是静态的),而你的Main
方法是static
。
也就是说:
- 更改
Program
和它的字段为静态:static class Program
-
在使用
LoadSettings
之前实例化Program
:static void LoadSettings() { //... Program p = new Program(); p.txtUserName = vals[0]; //... }