public class MyBase
{
public int x;
public void Show() {}
}
在派生类中用 Show名称声明成员会隐藏基类中的 Show方法,即:public class MyDerivedC : MyBase
{
new public void Show() {}
}
{
public int x;
public void Show() {}
}
在派生类中用 Show名称声明成员会隐藏基类中的 Show方法,即:public class MyDerivedC : MyBase
{
new public void Show() {}
}
解决方案 »
- c#操作xml文件的问题,请高手指点
- 语句tabControl1.Size.Width = Parent.Size.Width;为什么会出错?
- 怎样把图标保存为位图
- double.NaN
- 请问:在C#环境下,如何创建文件,并把一个字符串写入文件。
- 好难的问题
- 关于装配件的问题
- C#作界面C++作功能程序,如何融合,看什么书谢谢
- 用C#如何读写一个固定格式的XML文档,马上给分!
- C#对AES解密,关于偏移量的问题
- 求教!winform下dataGrid绑定dataTable,在dataTable上添加一条row,让dataGrid指在这条row上
- 在C#中操作ACCESS不用COM组件如何得到字段类型、长短、是否为空等属性
======================================
namespace ZZConsoleTest
{
public class Test1
{
public int i = 0;
public Test1()
{
}
public void method()
{
Console.WriteLine("Test1");
} public virtual void methodV()
{
Console.WriteLine("virtual Test1");
} } public class Test2 : Test1
{
public Test2()
{
}
public new void method()
{
Console.WriteLine("Test2");
} public new void methodV()
{
Console.WriteLine("virtual Test2");
} } public class ZZConsole
{
[STAThread]
static void Main(string[] args)
{
Test2 test = new Test2();
test.method();
test.methodV();
Console.ReadLine();
}
}
}
=======================
输出结果
========================
Test2
virtual Test2
我想让子控件彻底看不到Show()方法;To liuzxit(如果)
直接用private我也试了,Show()方法仍然可见有什么高招请指教! 谢谢!!
override这个方法,并抛出异常,同时在提示中加上此方法不可用的信息。
上面所说的办法,虽然隐藏了方法,但还是可以调用的:
((BaseClass) this).Method();所以微软这样做是有道理的,这才是靠得住的办法。
如果要覆盖,直接NEW一个重名方法,同时声明为PRIVATE就覆盖了。
楼上的,类型强制转换后,当然可以用啦,呵
同时声明为PRIVATE仍然能看到这个方法!!