静态属性的疑问??
using System;
using System.Reflection;
namespace ConsoleApplication1
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine(B.Name);
Console.ReadLine();
}
}
class A
{
public static string ClassName
{
get
{
return System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name;
}
}
public static string Name
{
get
{
return ClassName;
}
}
}
class B : A
{
public new static string ClassName
{
get
{
return System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name;
}
}
}
}
输入结果是:A,如何才能让输出结果是B呢?
问题点数:0、回复次数:5Top
1 楼fancyf(凡瑞)回复于 2005-06-02 15:09:18 得分 0
静态属性是在编译时绑定的,不能被重载Top
2 楼98star(超越梦想,一起飞。我们需要真心面对。)回复于 2005-06-02 15:25:16 得分 0
static修饰符修饰的字段成员表示一个静态字段成员,它属于类而不属于具体对象,对于属性成员,static也具有相同的意义,就是说如果使用了static修饰符修饰一个属性成员,那么改成员属于类,而不是属于具体对象的。Top
3 楼Sunmast(速马@Redmond, WA)回复于 2005-06-02 15:28:43 得分 0
静态成员都不会被继承,虽然B.Name也可以访问,但访问到的是class A的代码
如果是实例成员则不会有此问题Top
4 楼Sunmast(速马@Redmond, WA)回复于 2005-06-02 15:30:54 得分 0
除非class B内也加上:
public new static string Name
{
get
{
return ClassName;
}
}Top
5 楼hjf1223(阿不)回复于 2005-06-02 16:00:01 得分 0
听课Top




