C# OpenXML:使用Element.Val和Element{Val=";Val";}的区别
基本上,这个C# OpenXML:使用Element.Val和Element{Val=";Val";}的区别,c#,.net,openxml,openxml-sdk,C#,.net,Openxml,Openxml Sdk,基本上,这个 pRp.GetFirstChild<ParagraphStyleId>().Val = "Heading1"; pRp.GetFirstChild().Val=“Heading1”; 还有这个 pRp.GetFirstChild<ParagraphStyleId>().Remove(); pRp.InsertAt(new ParagraphStyleId() { Val = "Heading1" }, 0); p
pRp.GetFirstChild<ParagraphStyleId>().Val = "Heading1";
pRp.GetFirstChild().Val=“Heading1”;
还有这个
pRp.GetFirstChild<ParagraphStyleId>().Remove();
pRp.InsertAt(new ParagraphStyleId() { Val = "Heading1" }, 0);
pRp.GetFirstChild().Remove();
pRp.InsertAt(新的ParagraphStyleId(){Val=“Heading1”},0);
给了我不同的结果。后者的工作原理与预期一致。第一个没有。为什么?
我试图做的是将文档的第一段设置为Heading1样式,无论是否存在ParagraphStyleId,或者是否设置了其他样式
还有,有没有更好的方法
谢谢 要了解完整的场景,您需要了解引用类型和值类型之间的差异。只有C#7.0及更高版本支持返回引用类型: 在第一个场景中:
pRp.GetFirstChild<ParagraphStyleId>()
最后,在这里,通过向父实例中添加新对象,再次对其进行操作
主要区别在于,在第一种情况下,您操作的是ParagraphStyleId对象的副本,而在第二种情况下,您直接操作的是父实例,即pRp。Awesome!谢谢
pRp.GetFirstChild<ParagraphStyleId>().Remove();
pRp.InsertAt(new ParagraphStyleId() { Val = "Heading1" }, 0);