首页 > 解决方案 > 带有 var 的匿名类型给出错误 CS0825

问题描述

我想在类中的 C# 中创建一个匿名类型。

我见过的示例var用于创建匿名变量

    var RecordId = new 
    { 
        Foo = 0,
        Bar = "can be also a string"
    };

但是我想在一个类中创建我的匿名变量。

public class Logger //: LogBase
{
    var RecordId = new 
    { 
        Foo = 0,
        Bar = 1
    };
}

所以在记录时我可以这样做:

Logger.RecordId.Foo

但是将我的匿名类型声明为 var 会触发以下错误:

CS0825: The contextual keyword 'var' may only appear within a local variable declaration.

匿名变量的类型是什么,所以我不必使用var?

我明白错误告诉我什么,但我不想将我的变量移动到函数中,它需要是 Logger 的属性。

编辑:枚举是我一开始就尝试过的,但我需要这些值比整数更灵活(比如字符串,所以我可以转储 jon 文件)。我更新了我的问题以反映这一点。

标签: c#varanonymous-types

解决方案


var(并且根据定义匿名类型)只能在方法内声明,错误消息基本上是在告诉你。如果您需要此类型处于类级别,则创建一个类/结构/元组来存储它。

public static class Record
{
    public static int Foo { get; set; }
    public static int Bar { get; set; }
}

public class Logger //: LogBase
{
    public static Record RecordId { get; set; } = new Record();
}

现在你可以这样做:

var foo = Logger.RecordId.Foo;

请注意,我也使用过static,因此您无需创建该类的新实例,但如果您认为它相关,请更改它。


推荐阅读