请原谅我,如果它是中殿;
但我正在尝试在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";
但价值永远不会“测试”?我错过了我的概念吗?
答案 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" };