【问题标题】:is the object instanciated是实例化的对象
【发布时间】:2021-01-14 15:04:38
【问题描述】:

这里是 vala 的示例源代码,用于从基本操作系统网站创建一个简单的 GTK 应用程序


public class Examples.Application : Gtk.Application {
    public Application () {
        Object (
            application_id: "org.valadoc.examples",
            flags: ApplicationFlags.FLAGS_NONE
        );
    }

    protected override void activate () {
        var application_window = new Gtk.ApplicationWindow (this);
        application_window.show_all ();
    }

    public static int main (string[] args) {
        var app = new Application ();
        return app.run (args);
    }
}

我不理解这段代码中的对象?它是什么?它是一个对象吗?如果它是一个对象,那么为什么它没有新的关键字并且没有实例化?

【问题讨论】:

    标签: object gtk vala


    【解决方案1】:

    您在构造函数中看到的Object() 是一种特定于Vala 的语法,称为:GObject-style construction。它允许您一次设置所有属性。

    这允许您使用 GObject 所谓的“构造属性”:可以在构造期间设置的属性(有时它们甚至只能在构造期间专门设置)。

    【讨论】:

    • 为什么他们不在 c# 或 java 风格中这样做?
    • 构造属性是一个 GObject 的东西,已经存在了很长时间。 Vala 主要是作为 GObject 的包装器。请注意,除了某些情况,没有什么可以阻止您像 this.x = x 这样初始化字段
    • 我可能需要阅读更多关于 GObject 的信息,谢谢 ;)
    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2012-05-04
    • 2013-03-28
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多