根据struct _GValue如下:
struct _GValue
{
/*< private >*/
GType g_type;
/* public for GTypeValueTable methods */
union {
gint v_int;
guint v_uint;
glong v_long;
gulong v_ulong;
gint64 v_int64;
guint64 v_uint64;
gfloat v_float;
gdouble v_double;
gpointer v_pointer;
} data[2];
};
第一期:
为什么有2个元素数据? data [0]表示g_type的值,但data [1]存储了什么?我不明白为什么数据[2]有2个元素?
第二期:
在联合数据[2]中,此v_pointer存储除基础类型之外的其他类型,如G_TYPE_INT,G_TYPE_LONG等。从v_int到v_double它们存储基础类型的值,如果g_type不是基础类型数据[0]使用哪种类型存储其类型的值?所以我猜它使用v_pointer来存储该值的指针。我不知道我是否理解原则问题是否正确?
如果有人对我有任何想法,请提前谢谢。
答案 0 :(得分:1)
gobject / gvalue.h中的评论,
OnClientClick='<%# "Download(" +Eval("ID") + " );" %>'
根据当前的实现,data [1]存储GValue对象的属性/状态。并且对于适合指针的值内容,例如对象或字符串,使用data [0] .v_pointer。但是用户不能对数据的存储方式做出任何假设,将来可能会改变。