在另一个类的属性中使用的类的类中设置属性

时间:2009-11-06 10:01:04

标签: c#

请原谅我,如果它是中殿;

但我正在尝试在SomeType类中设置属性;

public class SomeType<T>
{
    private T _value;

    public T Name
    {
        get;
        set;
    }

    public T Value
    {
        get
        {
            return _value;
        }
        set
        {
            _value = value;
        }
    }
}

在另一个;

private class Source
{

    public SomeType<String> value1
    {
        get
        {
            return new SomeType<String>();
        }

    }

}

在Test方法中,我尝试的很简单;

Source source = new Source();
source.value1.Value = "Test";

但价值永远不会“测试”?我错过了我的概念吗?

4 个答案:

答案 0 :(得分:3)

每次访问 value1属性时,您都会返回SomeType的新实例。当您检查Value是“Test”时,您正在检查它是否在一个全新的对象上“测试”。

答案 1 :(得分:3)

每次访问SomeType<string>属性时,您都会返回一个新的value1对象,所以尽管您在该对象上正确设置了Value属性,但这意味着下一个你访问value1时得到一个全新的对象。

看看这是否有所不同:

private SomeType<string> _value1 = new SomeType<string>();
public SomeType<string> value1
{
    get
    {
        return _value1;
    }
}

答案 2 :(得分:0)

在Source.value1中,每次访问getter时都会创建一个SomeType<string>的新实例(本身并不是一个好的编码习惯用法)。 string的默认值为null,因此它是Value属性的值,因为它从未设置为其他任何值。

换句话说。这是预期的。

也许您可以与我们分享您想要实现的目标?

答案 3 :(得分:0)

value1始终返回一个新的SomeType。这就是为什么答案永远不会“测试”。以下代码可以解决您的问题:

private class Source
{
    public SomeType<String> value1
    {
        get;
        set;
    }
}

source.value1 = new SomeType<string>() { Value = "Test" };