非常简单的设置。
public ObservableCollection<ParentNode> CreateTreeViewCollection(string ClassName)
{
EnumerateFullData AllData = new EnumerateFullData() { ClassName = ClassName.Clone() };
}
public class EnumerateFullData
{
public Object ClassName { get; set; }
public List<PropertyData> Properties { get; set; }
}
创建对象时,ClassName
值为null
,即使它在我创建的类之前有值。
一旦类完成并且调试器返回到原始类,则值再次出现。
我认为这与实例产生有关,有人可以建议我如何将这个引用传递给新创建的类吗?
答案 0 :(得分:2)
在创建对象后分配ClassName
值,因为use正在使用类初始值设定项。如果要在对象创建期间分配值,请使用构造函数。此外,如果将属性更改为字符串类型,则不需要使用ClassName.Clone()
,因为字符串是不可变的。以下代码应该有效:
public ObservableCollection<ParentNode> CreateTreeViewCollection(string ClassName)
{
EnumerateFullData AllData = new EnumerateFullData(ClassName);
}
public class EnumerateFullData
{
public EnumerateFullData (string className)
{
ClassName = className;
}
public string ClassName { get; set; }
public List<PropertyData> Properties { get; set; }
}
答案 1 :(得分:1)
你混合了ClassName
EnumerateFullData
的属性和ClassName
CreateTreeViewCollection
的论点;所以你试图克隆null 。更改
// Let argument be in the camel case, "className" not "ClassName"
public ObservableCollection<ParentNode> CreateTreeViewCollection(string className)
{
// property "ClassName" is a clone of argument "className"
EnumerateFullData AllData =
new EnumerateFullData() { ClassName = className.Clone() };
}
答案 2 :(得分:0)
您正在使用对象初始值设定项。它们只是语法糖。写
EnumerateFullData AllData = new EnumerateFullData() { ClassName = ClassName.Clone() };
实际上是这样的:
var temp = new EnumerateFullData();
temp.ClassName = ClassName.Clone();
EnumerateFullData AllData = temp;
首先创建您的类,然后才设置ClassName
属性。
您可以在单个中执行此操作,因为编译器会为您执行此操作。
这意味着当创建EnumerateFullData
实例时,ClassName
实际上是空的。