Tag: oop

访问说明符和访问修饰符之间的区别

我在互联网上读过,我听过有人说 访问说明符:: 访问说明符确定字段在其他类中编码的可访问性。 访问范围从完全可访问到完全无法访问。 您可以选择声明具有访问说明符关键字的字段:public,private或protected。 访问修饰符:: 您可以选择使用修饰符关键字声明一个字段:final或volatile和/或static和/或transient,abstract等。 有什么不同吗? 因为访问修饰符和访问说明符的大多数定义都表示相同的东西……这看起来很模糊。

如何使用接口克服C#中的多重inheritance问题?

我知道C#不支持多重inheritance,而且解决方案是使用接口。 但我不明白的是为什么接口不像多inheritance那样创建钻石问题。 如何使用接口避免多重inheritance的陷阱?

什么是价值等级,什么是C#中的参考类?

C#中的value class和reference class的定义是什么? 这与value type和reference type有何不同? 我问这个问题是因为我在MCTS Self-Paced Training Kit(考试70-536)中读到了这个问题。 第1章,第1课,课程回顾4: 您需要创建一个仅包含值类型的简单类或结构。 您必须创建类或结构,以使其尽可能高效地运行。 您必须能够将类或结构传递给过程,而无需担心过程将对其进行修改。 您应该创建以下哪项? 参考类 B参考结构 C值类 D值结构 正确答案:D 不正确:你可以创建一个引用类; 但是,它可以在传递给程序时进行修改。 B不正确:您无法创建参考结构。 C不正确:您可以创建一个值类; 然而,结构往往更有效。 D正确:价值结构通常是最有效的。

oo问题 – 混合控制器逻辑和业务逻辑

我不确定我是否使用“标准”术语,但这是我试图解决的基本OO问题。 我正在编写一个Windows窗体。 我不想在表单事件处理程序中使用逻辑,所以我只是从那里调用自定义对象。 在自定义对象中,有两组逻辑。 “控制器”逻辑,决定需要完成什么以及何时完成。 执行需要完成的操作的实际业务逻辑(例如,执行数学运算并返回结果的控件等)。 我的问题是,OO架构是否允许在一个对象中同时使用这两个? 或者是否建议将它们拆分为“控制器”对象和“业务逻辑”对象? 我应该参考这个设计模式吗? 目前,我已经开始将它们组合成一个对象。 该对象具有包含控制器逻辑的“start”方法。 然后,此方法根据需要调用对象的其他方法,并最终将结果返回给对象的调用者。

如何在int数组中分配内存

int数组占用多少空间? 或者int数组消耗的空间(以字节为单位)看起来像这样: int[] SampleArray=new int[]{1,2,3,4}; 内存分配语言是否具体? 谢谢你们

使用事件有多少性能开销?

我对编程很新,而且我对OOP的知识有限,我决定使用事件在我的类之间进行通信。 当然,这将导致相当多的事件。 我想知道使用事件是否还有额外的开销? 我假设除非事件被执行(即,类中有一个监听器根据被触发的事件执行一个函数),那么应该没有太大的影响。 但是我并不熟悉C#中的事件,并且想要确认是否仅仅为了触发事件而产生了大量的额外开销?

限制实例创建一个类?

我正在使用C#。 我创建了一个可以包含在任何c#.net项目中的类(基于桌面或基于Web),但我希望在我的类的应用程序中只创建10个对象。 如果对象实例创建超过10,那么它应该给出错误或简单不起作用。 可能有两种情况, 我将myclass.cs文件包含在任何项目中 我将我的类捆绑在DLL中,然后将其包含在任何应用程序中 在这两种情况下,如果在应用程序中创建了超过10个类的实例,则必须通过错误。 这个问题是我的老师问的,他告诉我在互联网上搜索答案,我试过但没有找到解决这个问题的方法,我还没有听说过我们可以限制对象? 是否可能,如果是,那么如何? 谢谢

generics运行时或编译时多态吗?

我读到以下格式属于参数多态,但是我们可以将它分为一个,运行时或编译时多态吗? public class Stack { // items are of type T, which is known when we create the object T[] items; int count; public void Push(T item) {…} //type of method pop will be decided when we create the object public T Pop() {…} }

如何增加属性的访问修饰符

我正在尝试创建一组类,其中共同的祖先负责设置各种属性所涉及的所有逻辑,后代只是根据特定后代是否需要来更改属性的访问权限。 当我尝试如下所示执行此操作时,我收到编译器错误: “在覆盖’protected’inheritance的成员时,无法更改访问修饰符” 有没有办法实现我想要做的事情? 谢谢 public class Parent { private int _propertyOne; private int _propertyTwo; protected virtual int PropertyOne { get { return _propertyOne; } set { _propertyOne = value; } } protected virtual int PropertyTwo { get { return _propertyTwo; } set { _propertyTwo = value; } } } public class ChildOne : Parent […]

受保护的只读字段与受保护的属性

我有一个抽象类,我想在其受保护的构造函数中初始化一个只读字段。 我希望这个readonly字段在派生类中可用。 我习惯于将所有字段设为私有并暴露属性,我实现如下: abstract class Foo { private readonly int _field; protected Foo(int field) { _field = field; } protected int Field { get { return _field; } } } 但后来我想知道在这里保持这个领域是否真的有很多好处。 我知道属性的优点,一般来说这个问题有几个SO问题,但它们关注的是公共领域而不是受保护领域。 那么我应该切换到以下实现吗? 在任何一种情况下,要注意哪些因素和优点/缺点? abstract class Foo { protected readonly int _field; protected Foo(int field) { _field = field; } }