父类字段覆盖,该如何解决
父类字段覆盖
我想用F_id覆盖掉父类的Id
这个要怎么玩?

PS:我是菜鸟
------解决思路----------------------
声明一个相同的Id,使用new 关键字 隐藏父类Id
------解决思路----------------------
在set 方法里 ,把父类的Id 重新赋值呗。类似:
------解决思路----------------------
只有相同名称才能叫做覆盖,你这个只能叫替换
你没法在子类里隐藏掉Id
所以如果你想让两个字段使用相同的功能可以这么写
------解决思路----------------------
或者
------解决思路----------------------
不明白你所谓的覆盖到底是什么含义
是说子类里定义了FID,那么父类里的ID就不可用了吗?
还是说,子类里FID的值,和父类里ID的值永远相同?
------解决思路----------------------
代码4楼5楼已经给了
4楼就是简单的永远相同
5楼就是先定义个同名变量override掉,再让FID和它相同
public abstract class BaseEntity
{
public virtual int Id { get; set; }
public override bool Equals(object obj)
{
return Equals(obj as BaseEntity);
}
public virtual bool Equals(BaseEntity other)
{
if (other == null || !(other is BaseEntity))
{
return false;
}
return (this == (BaseEntity)other);
}
public override int GetHashCode()
{
return Id.GetHashCode();
}
public static bool operator ==(BaseEntity x, BaseEntity y)
{
if ((object)x == null && (object)y == null)
{
return true;
}
if ((object)x == null || (object)y == null)
{
return false;
}
return x.Id == y.Id;
}
public static bool operator !=(BaseEntity x, BaseEntity y)
{
return !(x == y);
}
}
public class Child:BaseEntity
{
public Int32 F_Id { get; set; }
public String Name{ get; set; }
}
我想用F_id覆盖掉父类的Id
这个要怎么玩?
PS:我是菜鸟
------解决思路----------------------
声明一个相同的Id,使用new 关键字 隐藏父类Id
------解决思路----------------------
在set 方法里 ,把父类的Id 重新赋值呗。类似:
base.Id = value;
------解决思路----------------------
只有相同名称才能叫做覆盖,你这个只能叫替换
你没法在子类里隐藏掉Id
所以如果你想让两个字段使用相同的功能可以这么写
public int F_Id;
public override int Id { get { return F_Id; } set { F_Id = value; } }
------解决思路----------------------
或者
int _id;
public int F_Id { get { return _id; } set { _id = value; } }
public override int Id { get { return _id; } set { _id = value; } }
------解决思路----------------------
不明白你所谓的覆盖到底是什么含义
是说子类里定义了FID,那么父类里的ID就不可用了吗?
还是说,子类里FID的值,和父类里ID的值永远相同?
------解决思路----------------------
代码4楼5楼已经给了
4楼就是简单的永远相同
5楼就是先定义个同名变量override掉,再让FID和它相同