GVKun编程网logo

c# – 什么时候应该覆盖OnEvent而不是在继承时预订事件

14

如果您对c#–什么时候应该覆盖OnEvent而不是在继承时预订事件感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解c#–什么时候应该覆盖OnEvent而不是在继承时预订事件的各种细节,此外还有关

如果您对c# – 什么时候应该覆盖OnEvent而不是在继承时预订事件感兴趣,那么这篇文章一定是您不可错过的。我们将详细讲解c# – 什么时候应该覆盖OnEvent而不是在继承时预订事件的各种细节,此外还有关于android – 什么时候应该使用`@ id`而不是`@id`?、C++ 中什么时候应该使用继承,什么时候应该使用组合?、c#什么时候应该使用列表,什么时候应该使用arraylist?、Java EventQueue.我什么时候应该考虑使用它?的实用技巧。

本文目录一览:

c# – 什么时候应该覆盖OnEvent而不是在继承时预订事件

c# – 什么时候应该覆盖OnEvent而不是在继承时预订事件

何时应该做以下事情?
class Foo : Control
{
    protected override void OnClick(EventArgs e)
    {
        // new code here
    }
}

与此相反?

class Foo : Control
{
    public Foo()
    {
        this.Click += new EventHandler(Clicked);
    }

    private void Clicked(object sender,EventArgs e)
    {
        // code
    }
}

解决方法

覆盖而不是附加代理将导致更有效的代码,因此通常建议您始终尽可能地执行此操作.有关更多信息,请参阅 this MSDN article.这是一个相关报价:

The protected OnEventName method also allows derived classes to override the event without attaching a delegate to it. A derived class must always call the OnEventName method of the base class to ensure that registered delegates receive the event.

android – 什么时候应该使用`@ id`而不是`@id`?

android – 什么时候应该使用`@ id`而不是`@id`?

我在< merge>中有一堆视图,我包含了< merge>进入RelativeLayout.我尝试引用那些包含的视图的ID作为我的其他视图的锚点,但 Eclipse抱怨ID没有解析.我在第一次引用它时使用@id而不是@id找到了一种解决方法,而不是在我实际定义它们引用的对象时.我已经在样式和包含的< merge>中定义了两个ID.它们被声明的地方,如果我不断重复ID的定义,感觉有点低效.

这是正确的做法吗?我认为它是坏的,因为”是另一个初始化.我当前的假设是你应该在第一次使用ID时使用@id,而不是在初始化ID将要表示的对象时使用@id,有点像C/C++以及它们如何在先前的行中至少需要一个函数原型到使用该函数的实际代码.

我的另一个问题是当你使用Eclipse的基于GUI的UI构建器时,我注意到它们总是使用@id而不是@id.这是否可以接受,因为它对我来说似乎效率低下;好像应用程序将花费更多时间来确定是否已在R.id中声明了ID.

解决方法

使用@id格式告诉 Android资产编译器为您的元素分配ID,它实际上不是id本身.因此,如果我使用@ id / myNewId,资产编译器将创建一个名为myNewId的新id,并为其提供一个数字.可以从代码中以R.id.myNewId访问实际数字.

如果使用@id,编译器将查找R.id.id.您可以在XML文件中定义自己的ID,如下所述:http://developer.android.com/guide/topics/resources/more-resources.html#Id.您可以在res / values / [your_filename] .xml中创建自己的文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item
        type="id"
        name="id_name" />
</resources>

然后引用@id_name,例如

您还可以使用Android命名空间中定义的Id:@android:id / empty

这在Android文档中得到了很好的解释:http://developer.android.com/guide/topics/ui/declaring-layout.html#id

这里还有一些进一步的讨论:android:id what is the plus sign for

C++ 中什么时候应该使用继承,什么时候应该使用组合?

C++ 中什么时候应该使用继承,什么时候应该使用组合?

c++++ 中,继承用于建立“是-一个”关系,强制执行接口一致性。而组合用于建立“包含-一个”关系,提供灵活性。继承:当子类与基类具有“是-一个”关系时使用,如车辆与汽车。组合:当容器类与组件类具有“包含-一个”关系时使用,如游戏中的角色包含武器、防御、健康值。

C++ 中什么时候应该使用继承,什么时候应该使用组合?

C++ 中继承与组合:何时使用?

在 C++ 中,继承和组合是两种用于对象组织和代码重用的技术。理解何时使用哪种技术对于编写可维护、可扩展的代码至关重要。

继承

立即学习“C++免费学习笔记(深入)”;

继承允许一个类(子类)从另一个类(基类)继承数据和行为。子类可以访问基类中的所有非私有成员变量和函数,并可以重写这些成员以实现不同的行为。

何时使用继承:

  • 当子类与基类具有“是-一个”关系时,例如:

    • 车辆:汽车、卡车、摩托车
    • 动物:猫、狗、鸟
  • 当需要强制执行特定接口时,例如:

    • 形状:圆形、方形、三角形

优点:

  • 提供代码复用性
  • 促进多态性(通过虚函数)
  • 强制执行接口一致性

组合

组合涉及创建一个类(容器类)并通过指针或引用将另一个类(组件类)作为其数据成员包含在其中。组合允许容器类使用组件类的功能,但两者在内存中是独立的实体。

何时使用组合:

  • 当容器类与组件类具有“包含-一个”关系时,例如:

    • 汽车:发动机、轮胎、车身
    • 电脑:主板、CPU、内存
  • 当需要更大的灵活性时,例如:

    • 在运行时修改容器类的组件
    • 使用不同类型的组件实现同一种接口

优点:

  • 提供更大的灵活性
  • 允许代码重用
  • 促进模块化

实战案例:

考虑一个动物模拟程序,其中需要表示各种动物。我们可以使用继承为所有动物定义一个基类 Animal,包含共同属性(例如名称、类型)。然后,我们可以创建子类 Cat、Dog 和 Bird 来表示特定类型的动物,并为每个子类重写描述独特行为的虚函数。

另一方面,可以考虑一个游戏引擎,其中需要表示角色。我们可以使用组合为每个角色创建一个容器类 Character,包含其他类作为组件:

class Character {
public:
  Sword* sword;  // 组件:武器
  Shield* shield;  // 组件:防御
  Health* health;  // 组件:生命值
};
登录后复制

通过这种方式,我们可以轻松地创建具有不同武器、防御和健康值的各种角色,而无需创建多个继承类。

总之,在 C++ 中,继承主要用于建立“是-一个”关系并强制执行接口一致性,而组合主要用于建立“包含-一个”关系并提供更大的灵活性。根据应用程序的特定要求,明智地选择这些技术对于编写清晰、可维护的代码至关重要。

以上就是C++ 中什么时候应该使用继承,什么时候应该使用组合?的详细内容,更多请关注php中文网其它相关文章!

c#什么时候应该使用列表,什么时候应该使用arraylist?

c#什么时候应该使用列表,什么时候应该使用arraylist?

如标题所示,什么时候应该使用List,什么时候应该使用ArrayList

谢谢

Java EventQueue.我什么时候应该考虑使用它?

Java EventQueue.我什么时候应该考虑使用它?

我目前正在查看Oracle网站上的EventQueue类:
http://download.oracle.com/javase/1.4.2/docs/api/java/awt/EventQueue.html
但我不确定何时应该使用它?如果我的班级有两个或更多活动的听众,我应该使用它吗?

解决方法

通常,您不必向EventQueue提交任何事件,当用户执行其操作(如鼠标点击等)或系统认为您的窗口需要重新绘制时,这一切都会“自动”发生.

我经常使用的两种方法是EventQueue.invokelater和EventQueue.invokeAndWait()(不常用).如果您在EDT(事件调度线程)之外执行某些操作,然后想要对GUI进行一些更改(例如向容器添加组件或从容器中删除组件),请使用其中一个操作,因为此类操作应仅在美国东部时间.

关于c# – 什么时候应该覆盖OnEvent而不是在继承时预订事件的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于android – 什么时候应该使用`@ id`而不是`@id`?、C++ 中什么时候应该使用继承,什么时候应该使用组合?、c#什么时候应该使用列表,什么时候应该使用arraylist?、Java EventQueue.我什么时候应该考虑使用它?的相关知识,请在本站寻找。

本文标签: