3

我对Vala比较陌生,我正在尝试手动将一些 C# 代码移植到 vala 中,我从一个简单的示例开始对其进行测试。

C# 编码人员会将下面的代码片段识别为与 C# 的 1-1 映射。

这是测试 vala 文件 Universe.vala:

namespace Universe
{
    public interface Planet
    {
        string Name { get; }
    }
}

我得到编译错误:

Universe.vala:错误:属性获取器必须有一个主体

Vala 似乎不支持接口中的 get(set)ter 属性——或者我错过了什么?我该如何解决?

4

1 回答 1

3

在 Vala 中,接口仍然可以包含非抽象属性和方法(但没有变量)。这意味着如果你想定义一个抽象属性或方法,你仍然需要使用abstract关键字,就像在抽象类中一样。

由于您没有在abstract此处使用关键字,因此编译器认为您正在尝试定义非抽象属性。然而,接口中的非抽象属性需要显式主体(因为默认实现需要使用变量,这是不允许的)。这就是为什么错误消息抱怨缺少正文的原因。

只需添加abstract关键字,它就可以正常工作。

于 2012-05-09T09:16:58.300 回答