【问题标题】:Regarding OOPs Concept [closed]关于 OOP 概念 [关闭]
【发布时间】:2014-11-05 10:10:27
【问题描述】:

下面有两个类。

Class A { int i; } 
Class B : A { int j; }

如何通过单个命令或优化方式初始化 i=1 和 j=2?

【问题讨论】:

  • 你想做什么?如果您希望类 A 的每个实例变量 i 的值为 1,那么您可以在 i 的定义处执行此操作。喜欢class A{ int i = 1; }
  • 你看过构造函数吗?
  • 谢谢。我已经回答了 Constructor 选项,但面试官期待别的东西!
  • 这个问题的答案很容易通过简单的学习得到。
  • 除了改变这些类,你不能。由于没有指定隐私修饰符,默认情况下这些字段是私有的,因此只能从相关类内部设置。如果将它们公开,则可以使用初始化语法。由于这显然是一个面试问题,它可能具有人为的限制,因此成为本网站主题的“建设性实际问题”的牺牲品。

标签: c# oop


【解决方案1】:

如果这些字段是公开的(或内部的):

class A { public int i; } 
class B : A { public int j; }

你可以像这样使用初始化器:

var b = new B() { i = 1, j = 2 };

【讨论】:

    【解决方案2】:

    如果是在采访的背景下,预期的单行答案可能是:

    var b = new B { i = 1, j = 2 };
    

    请注意,与创建一个新实例然后影响某些公共字段/属性的值相比,它并没有更好地优化

    【讨论】:

    • 虽然是私人领域,但这可能更符合面试官的预期。
    • @LasseV.Karlsen 公平的假设,但由于 OP 的代码实际上被破坏了(Class 而不是class),所以很难说。
    • 好点。它很可能是从记忆中转述出来的,因为我们知道这些字段实际上在实际面试问题中是公开的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2021-06-12
    • 1970-01-01
    相关资源
    最近更新 更多