他们都做同样的工作-定义单击按钮时会发生什么。 那么,两者的真正区别是什么?
答案 0 :(得分:0)
Xamarin在Android(和iOS)框架内的许多地方创建C#包装程序,以将平台的本机方法标准化为标准.Net / C#约定。
#version 430 compatibility
#extension GL_ARB_compute_shader : enable
#extension GL_ARB_shader_storage_buffer_object : enable
layout(std140, binding = 4) buffer Pos
{
vec4 Positions[]; // array of structures
};
layout(std140, binding = 5) buffer Vel
{
vec4 Velocities[]; // array of structures
};
uniform float dt;
layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in;
void main()
{
uint numParticule = gl_GlobalInvocationID.x;
vec4 v = Velocities[numParticule];
vec4 p = Positions[numParticule];
vec4 tmp = vec4(0, -9.81, 0,0) + v * (0.001 / (7. / 1000.));
v += tmp ;
Velocities[numParticule] = v;
p += v ;
Positions[numParticule] = p;
}
是本机Java方法,而C#SetOnClickListener
是本机方法的Click
包装器。
Click事件处理程序背后的代码:
EventHandler
您可以在代码中看到,public event EventHandler Click {
add {
EventHelper.AddEventHandler (ref weak_implementor_SetOnClickListener, (Func<IOnClickListenerImplementor>)__CreateIOnClickListenerImplementor, (Action<IOnClickListener>)SetOnClickListener, (Action<IOnClickListenerImplementor>)delegate (IOnClickListenerImplementor __h) {
__h.Handler = (EventHandler)Delegate.Combine (__h.Handler, value);
});
}
remove {
EventHelper.RemoveEventHandler (ref weak_implementor_SetOnClickListener, (Func<IOnClickListenerImplementor, bool>)IOnClickListenerImplementor.__IsEmpty, (Action<IOnClickListener>)delegate {
SetOnClickListener (null);
}, (Action<IOnClickListenerImplementor>)delegate (IOnClickListenerImplementor __h) {
__h.Handler = (EventHandler)Delegate.Remove (__h.Handler, value);
});
}
}
是更有效的方法,因为它避免了包装程序。