草庐IT

c# - 为什么我不能将不同数量的引用传递给一个函数?

我想做这样的事情:doublea,b,c,d,e;ParseAndWrite("{1,2,3}",refa,refb,refc);ParseAndWrite("{4,5}",refd,refe);->a=1,b=2,c=3,d=4,e=5但是,我不能写这样的函数:privatevoidParseAndWrite(stringleInput,paramsrefdouble[]targets){(...)}这行不通,出于某种原因不能同时使用ref和params。为什么会这样?编辑:好的,这里有一些关于我为什么需要这个的更多信息:通过一个接口(interface),我得到了很多包含值的字符串

c# - 如何以编程方式将粗体文本写入 Word 文档而不加粗整个文档?

我的程序需要以Office.doc格式(非XML)生成非常简单的报告,并且文档的某些部分需要加粗。我一直在查看definingranges的文档,这部分是我的代码目前的来源。This文档的一部分并没有真正给我足够的细节来在我的文档中总体上实现这一点。到目前为止,这是我的代码:objectmiss=System.Reflection.Missing.Value;objectVisible=true;objectstart=0;Microsoft.Office.Interop.Word.ApplicationWordApp=newMicrosoft.Office.Interop.Word.

c# - 使 TypedReference 在方法 block 之外保持事件状态而不返回它

我想假设这个问题的目的是检查是否至少有一种方法,即使是通过最不安全的hack,来保持对非blittable值类型的引用。我知道这种设计类型堪比犯罪;除了学习之外,我不会在任何实际情况下使用它。所以现在请接受阅读异端的不安全代码。我们知道可以通过这种方式存储和增加对blittable类型的引用:unsafeclassFoo{void*_ptr;publicvoidFix(refintvalue){fixed(void*ptr=&value)_ptr=ptr;}publicvoidIncrement(){varpointer=(int*)_ptr;(*pointer)++;}}在安全性方面

c# - 使用 ref 参数委托(delegate)

有什么方法可以在下面的代码中保持相同的功能,而不必创建委托(delegate)?我正在与包含多种DeleteSomethingX(refIntPtrptr)方法的第3方API交互,并且我正在尝试集中IntPtr.Zero检查的代码。privatevoiddelegateCleanupDelegate(refIntPtrptr);...privatevoidCleanup(refIntPtrptr,CleanupDelegatecleanup){if(ptr!=IntPtr.Zero){cleanup(refptr);}} 最佳答案

C# 4.0 'dynamic' 没有设置 ref/out 参数

我正在试验DynamicObject。我尝试做的一件事是设置ref/out参数的值,如下面的代码所示。但是,我无法正确设置Main()中的i和j的值(即使它们在TryInvokeMember())。有谁知道如何使用ref/out参数调用DynamicObject对象并能够检索方法中设置的值?classProgram{staticvoidMain(string[]args){dynamicproxy=newProxy(newTarget());inti=10;intj=20;proxy.Wrap(refi,refj);Console.WriteLine(i+":"+j);//Print"

c# - MS Word 办公自动化 - 填写文本表单域和复选框表单域以及邮件合并

有没有人对如何使用C#(VB.NET也可以)创建引擎有什么好的建议或经验,该引擎足够通用以处理大多数我需要填充数据的MSWord文本字段从数据库?简而言之,我即将开始这个小小的Office自动化之旅,我希望这里的一些反馈可以帮助我避免一些耗时的错误。提前干杯并感谢您的任何建议;戴夫 最佳答案 我将发送两个示例来解决您的自动化问题。第一个是使用MailMerge,第二个是使用书签。word文件看起来是这样的:使用MailMerge(插入->快速部件->字段->邮件合并->合并字段)名字:«firstName»姓氏:«lastName»

c# - ref 参数和赋值在同一行

我最近遇到了一个讨厌的错误,简化后的代码如下所示:intx=0;x+=Increment(refx);...privateintIncrement(refintparameter){parameter+=1;return1;}Increment调用后x的值为1!一旦我发现发生了什么,这很容易解决。我将返回值分配给一个临时变量,然后更新x。我想知道如何解释这个问题。我忽略了规范中的某些内容还是C#的某些方面。 最佳答案 +=读取左侧参数然后读取右侧参数,因此它读取变量,执行递增方法,对结果求和,然后分配给变量。在这种情况下,它读取0,

c# - 引用滥用 : Worth Cleaning Up?

我继承了一些广泛且不必要地使用ref关键字的代码。最初的开发人员显然担心如果不使用ref对象会像原始类型一样被克隆,并且在编写50k+行代码之前没有费心去研究这个问题。这与其他不良编码实践相结合,造成了一些表面上非常危险的情况。例如:Customerperson=NextInLine();//personisAliceperson.DataBackend.ChangeAddress(refperson,newAddress);//personcouldnowbeBob,Eve,ornull您能想象走进一家商店更改地址,然后以完全不同的方式走出去吗?可怕,但在实践中在此应用程序中使用re

C#:在Word中搜索文本并获取结果范围

我可以通过以下方式在Word文件中查找文本:Word.Rangerange=wordApp.ActiveDocument.Content;Word.Findfind=range.Find;find.Text="xxx";find.ClearFormatting();find.Execute(refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmissing,refmiss

c# - .Net WebServices 和 out/ref WebMethod 参数

我从我们的供应商之一那里收到了一些他们正在发布的网络服务的文档,他们非常具体地指出,在他们的一个WebMethods上,一个参数有out修饰符(?不确定这是否是正确的描述符)例如考虑以下WebMethod签名:[WebMethod]publicvoidHelloWorld(outstringstrVal){strVal="HelloWorld";}[显然实际方法不是HelloWorld方法]现在,我从未考虑过设计带有out/ref参数的WebMethod,这让我想知道他们为什么会使用它。为了理解这个设计决定的应用,我将一个原型(prototype)和一些基本的HelloWorld风格的