【发布时间】:2024-01-22 20:38:01
【问题描述】:
我们能否隐藏派生类的公共方法,使其不能在 C# 的 Main() 函数中访问。我们无法更改派生类方法的访问器。
public class A
{
public void Add()
{
}
}
public class B : A
{
public void Multiply()
{
}
}
在 C# 的 main() 方法中
B b = new B();
b.mulitply(); // should give compile time error... Like method not founded.
我们有什么办法吗?
【问题讨论】:
-
我可以给你 17% 的答案。
-
@Peterchen,避免调用它。请参阅——对象的 ToString。没有办法摆脱它,它会导致错误。而且错误很糟糕:-)
-
@macias: 关于
ToString- 怎么样?你能详细说明一下吗?据我了解:在最坏的情况下,它是您可能需要照顾的基类遗产。令人高兴的是,没有很多 - ToString、GetHashCode、Equals。 -
@Peterchen,我更喜欢真正扎实的语言,它只能以明确的方式工作。隐式操作很糟糕,因为它会让代码滑入,这是我疲倦、半醒等的影响。 ToString 用作到字符串的隐式转换,因此编译器将愉快地编译语义不正确的代码。我一遍又一遍地被这个问题所困扰(隐式转换)。在 C++ 中引入了特殊的 Explicit 类只是为了避免这个问题,而在 C# 中它是语言的核心。 ...
-
... 最近我输入了 var filename = directory+network.Signature()+".xml";你看到错误了吗? Signature 是一个具有复杂数据的类,这样使用它没有任何意义,但它甚至可以在没有警告的情况下编译。运行程序后我看到了什么?名称为“Signature.xml”的文件。我没有时间处理这些微不足道的错误,而且令人沮丧的是语言还没有真正成熟(根据我们所有的经验)。
标签: c# inheritance language-features