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

MAUI Preferences报错:无法将System.Int64转换为System.Int32

MAUI Preferences存储long类型报错的解决办法

当然可以用Preferences存储数值,你的问题出在读取时的泛型推断错误:

在DefaultDictionary的getter里,你写的Preferences.Get(nameof(DefaultDictionary), 0)中,默认值0是int类型,编译器会自动推断调用Get<int>这个重载。但你存储的是long(Int64)类型的值,读取时就会尝试把存储的Int64强制转换成Int32,从而抛出类型转换异常。

解决方法很简单,二选一即可:

  • 将默认值改为long类型的0L,让编译器正确推断泛型为long:
    get { return Preferences.Get(nameof(DefaultDictionary), 0L); }
    
  • 或者显式指定泛型类型,彻底避免推断错误:
    get { return Preferences.Get<long>(nameof(DefaultDictionary), 0); }
    

修改后的完整类代码:

using CommunityToolkit.Mvvm;
public class UserSettings
{
    public long DefaultDictionary
    {
        get { return Preferences.Get(nameof(DefaultDictionary), 0L); }
        set { Preferences.Set(nameof(DefaultDictionary), value); }
    }

    public void CleanValues()
    {
        Preferences.Clear();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:50:53