C# 在不同类的属性中使用的类型的类中设置属性

C# 在不同类的属性中使用的类型的类中设置属性,c#,C#,如果是中堂,请原谅我 但是我试图在类SomeType中设置一个属性 public class SomeType<T> { private T _value; public T Name { get; set; } public T Value { get { return _value; } set

如果是中堂,请原谅我

但是我试图在类SomeType中设置一个属性

public class SomeType<T>
{
    private T _value;

    public T Name
    {
        get;
        set;
    }

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

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

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

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

每次访问
value1
属性时,您都返回一个新的
SomeType
对象,因此,尽管您在该对象上正确设置了
属性,这意味着下次访问
value1
时,您将获得一个全新的对象

看看这是否有什么不同:

private SomeType<string> _value1 = new SomeType<string>();
public SomeType<string> value1
{
    get
    {
        return _value1;
    }
}
private SomeType _value1=new SomeType();
公共类型值1
{
得到
{
返回_值1;
}
}

每次访问
value1
属性时,您都会返回一个新的
SomeType
对象,因此,尽管您正确设置了该对象的
Value
属性,但这意味着下次访问
value1
时,您将获得一个全新的对象

看看这是否有什么不同:

private SomeType<string> _value1 = new SomeType<string>();
public SomeType<string> value1
{
    get
    {
        return _value1;
    }
}
private SomeType _value1=new SomeType();
公共类型值1
{
得到
{
返回_值1;
}
}

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

换句话说。这是意料之中的


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

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

换句话说。这是意料之中的


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

value1总是返回一个新的SomeType。这就是为什么答案从来不是“测试”。下面的代码应该可以解决您的问题:

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

source.value1 = new SomeType<string>() { Value = "Test" };
私有类源
{
公共类型值1
{
得到;
设置
}
}
source.value1=newsometype(){Value=“Test”};

value1总是返回一个新的SomeType。这就是为什么答案从来不是“测试”。下面的代码应该可以解决您的问题:

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

source.value1 = new SomeType<string>() { Value = "Test" };
私有类源
{
公共类型值1
{
得到;
设置
}
}
source.value1=newsometype(){Value=“Test”};