You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms中无法在其他类引用App类公共变量的问题

解决Xamarin.Forms中CS0120: 非静态字段需要对象引用的错误

你遇到的这个错误其实很常见,核心问题出在成员访问的方式不对:你的productsJSON是App类的非静态公共字段,而你试图直接用App.productsJSON这种"类名.成员名"的方式访问——这种写法只适用于静态成员,非静态成员必须通过类的实例来调用。

在Xamarin.Forms中,获取当前正在运行的App实例有标准的方式,就是用Application.Current,然后把它强制转换成你的自定义App类型,这样就能访问你定义的实例成员了。

修改你的ProductsPage.xaml.cs代码如下:

public ProductsPage(string title)
{
    InitializeComponent();
    Title = title;
    
    // 替换原来的错误写法
    var currentAppInstance = (App)Application.Current;
    string productsJSON = currentAppInstance.productsJSON;
    
    displayProducts(productsJSON);
}

为什么网上的例子可以用"类名.属性名"?

你看到的那些示例里,目标成员一定是被标记为static的静态成员。如果你确实想通过App.productsJSON直接访问,也可以把App类里的字段改成静态的:

// 在App.xaml.cs里修改字段定义
public static string productsJSON = {{very large string}};
public static List<Product> jsonDataCollection = new List<Product>();

不过要注意:静态成员属于类本身,而不是实例,在Xamarin.Forms的App场景下,用Application.Current获取实例的方式更符合框架设计,也能避免静态成员可能带来的生命周期和线程安全问题(比如多个实例的冲突,不过App一般只有一个实例,但养成好习惯总是没错的)。

内容的提问来源于stack exchange,提问作者PaningningPH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 20:22:48