Nic*_*kon 6 c# linq oop class linked-list
也许这是一个新手问题,但任何人都可以解释我是如何制作捆绑/链接类(我不知道他们的真名)?例子可以是LINQ TO XML.
当我有下面的代码:
XDocument doc = XDocument.Load("...");
XElement element = doc.Element("root");
element.SetAttribute("NewAttribute", "BlahBlah");
doc.Save("...");
Run Code Online (Sandbox Code Playgroud)
我只更改element变量(我不需要更新它,doc因为它被引用).如何创建这样的类?
[编辑]
我试过@ animaonline的代码,它的工作原理
A a = new A();
B b = a.B(0);
b.Name = "asd";
Console.WriteLine(a.Bs[0].Name); // output "asd"
Run Code Online (Sandbox Code Playgroud)
但是告诉我们上面和下面的代码有什么不同?
List<string> list = new List<string>();
list.Add("test1");
list.Add("test2");
var test = list.FirstOrDefault();
test = "asdasda";
Console.WriteLine(list[0]); // output "test1" - why not "asdasda" if the above example works???
Run Code Online (Sandbox Code Playgroud)
doc.Element 是一种方法,它返回对具有指定 XName 的第一个(按文档顺序)子元素的引用。
考虑这个例子:
public class A
{
public A()
{
this.Bs = new List<B>();
this.Bs.Add(new B { Name = "a", Value = "aaa" });
this.Bs.Add(new B { Name = "b", Value = "bbb" });
this.Bs.Add(new B { Name = "c", Value = "ccc" });
}
public List<B> Bs { get; set; }
public B B(int index)
{
if (this.Bs != null && this.Bs[index] != null)
return this.Bs[index];
return null;
}
}
public class B
{
public string Name { get; set; }
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
用法:
A a = new A();
var refToA = a.B(0);
refToA.Value = "Some New Value";
foreach (var bs in a.Bs)
System.Console.WriteLine(bs.Value);
Run Code Online (Sandbox Code Playgroud)
解释:
正如您所看到的,B() 方法返回对 A 类中列表项的引用,更新它也会更改 A.bs 列表中的值,因为它是完全相同的对象。