C#new class清除基类值

时间:2013-03-11 13:30:06

标签: c# class parameters field base

我进行了广泛的搜索(尽管可能已经错过了)。我一直在做这么多网页开发,我似乎无法得到这个。我有一个基本案例:

public class myfields
{
    public String myfield1 { get; set; }
}

然后使用这个类的另一个类:

class mydohere : myfields
{
    public Boolean getValue {string xyz)
    {
        string abc = myfield1;
    }
}

如果我创建:

,我无法得到它
mydohere Objmydohere  = new mydohere();

myfield1的值现在为null!基本myfields中的所有值都设置为null(或者为空,因为它是一个新对象)。在一个类中创建字段(或参数)并在不重置其值的情况下共享它的最佳方法是什么?我尝试过使用关键字'base'。我尝试过使用道具和字段*因为你无法实例化它们。

我的目标是拥有一类可设置的字段,我可以跨类使用,而不会为使用它的每个类创建新类。这有意义吗?我确信有更好的方法可以做到这一点:)

3 个答案:

答案 0 :(得分:1)

听起来你正在寻找的是constantstatic变量。

如果始终相同,则使用常量:

const string myfield1 = "my const";

如果你想设置一次,可以使用static,也许是在做了一些逻辑之后:

static string myfield1 = "my static";

答案 1 :(得分:0)

这实际上取决于你想用这个“共享数据”做什么。一种方法是使用静态类和依赖注入:

public interface Imyfields
{
    String myfield1 { get; set; }
}

public class myfields : Imyfields
{
    private static readonly Imyfields instance = new myfields();

    private myfields()
    {
    }

    public static Imyfields Instance
    {
        get
        {
            return instance;
        }
    }

    public String myfield1 { get; set; }
}

class mydohere
{
    private readonly Imyfields myfields;

    public mydohere(Imyfields myfields)
    {
        this.myfields = myfields;
    }

    public Boolean getValue(string xyz)
    {
        string abc = this.myfields.myfield1;
    }
}

答案 2 :(得分:0)

没有任何东西被重置为null,它从未在第一次使用值初始化。在您的基础对象中,您只有一个getter / setter,您没有任何初始化该值的代码。

也许我不太了解这个问题,而其他人对静态的建议是你真正需要的! :)