草庐IT

Parameters

全部标签

C# 在运行时绑定(bind)事件时将附加参数传递给事件处理程序

我有一个链接按钮,它有一个常规的点击事件:protectedvoidlnkSynEvent_Click(objectsender,EventArgse){}我在运行时绑定(bind)这个事件:lnkSynEvent.Click+=newEventHandler(lnkSynEvent_Click);现在我需要函数来接受额外的参数:protectedvoidlnkSynEvent_Click(objectsender,EventArgse,DataTabledataT){}并在绑定(bind)此事件时传递与参数相同的参数:lnkSynEvent.Click+=newEventHandle

C# - 在动态生成的程序集中引用类型

我正在尝试弄清楚当您动态生成程序集时是否有可能引用以前动态生成的程序集中的类型。例如:usingSystem;usingSystem.CodeDom.Compiler;usingSystem.Reflection;usingMicrosoft.CSharp;CodeDomProviderprovider=newCSharpCodeProvider();CompilerParametersparameters=newCompilerParameters();parameters.GenerateInMemory=true;CompilerResultsresults=provider.C

c# - 参数计数不匹配

以下代码段有问题。我发现参数计数不匹配。由于多线程和不安全更新的问题,我不得不写这篇文章。delegatevoiddata_INPUTDelegate(objectsender,System.IO.Ports.SerialDataReceivedEventArgse);privatevoiddata_INPUT(objectsender,System.IO.Ports.SerialDataReceivedEventArgse){stringdata=serialPort.ReadLine();string[]tokens=data.Split(':');if(tokens[0]=="$

c# - 在方法覆盖中更改 params 修饰符

我知道params修饰符(将数组类型的一个参数转换为所谓的“参数数组”)不是方法签名的一部分。现在考虑这个例子:classGiraffid{publicvirtualvoidEat(int[]leaves){Console.WriteLine("G");}}classOkapi:Giraffid{publicoverridevoidEat(paramsint[]leaves){Console.WriteLine("O");}}编译时没有警告。然后说:varokapi=newOkapi();okapi.Eat(2,4,6);//willnotcompile!给出错误(方法“Eat”没有重

c# - 使用 TypeBuilder 为基类创建传递构造函数

假设我有一个SpaceShip类,如下所示:publicclassSpaceShip{publicSpaceShip(){}publicSpaceShip(IRocketFuelSourcefuelSource){}}我想使用TypeBuilder在运行时创建一个继承自SpaceShip的类型,并为SpaceShip中的每个类型定义一个构造函数。除了将参数传递给父级(“直通”构造函数)之外,我不需要构造函数实际做任何事情。例如,如果用C#表示,生成的类型将如下所示:publicclassSpaceShipSubClass:SpaceShip{publicSpaceShipSubClas

c# - 如何将类型传递给方法 - 类型参数与泛型

我有一个类似于工厂的对象的方法。你给它一个类型,它创建一个实例并做一些其他的事情。一种优雅的方式(在我看来)是这样的:publicTMagicMethod()whereT:SomeBaseClass{//Magicgoeshere}但这让FxCop感到不安,他说这是一种糟糕的风格-我收到“CA1004:通用方法应提供类型参数”警告。关于不使用推理之类的东西。所以,我能想到的唯一其他方法是这样的:publicSomeBaseClassMagicMethod(TypeT){//Samemagicgoeshere}我相信这在很多帐户上都不如第一种方法,但样式规则......关于警告的MSDN

c# - SQLCommand.Parameters.Add - 如何给出十进制值大小?

您将如何指定:Decimal(18,2)在此:SqlComm.Parameters.Add("@myValue",SqlDbType.Decimal,0,"myValue");目前我已经从设计端属性定义了precision=2。我只是好奇如何从代码中实现这一点。谢谢 最佳答案 没有Add的重载可让您直接设置小数精度,因此您需要创建一个SQlParameter对象并将其添加到集合中:SqlParameterparam=newSqlParameter("@myValue",SqlDbType.Decimal);param.SourceC

C# 使用 params 关键字的结果不一致

给定以下方法:staticvoidChangeArray(paramsstring[]array){for(inti=0;i如果我调用它来传递一个字符串数组,这将起作用:string[]array={"Michael","Jordan"}//willbecome{"Michaels","Jordans"}ChangeArray(array);但如果我使用字符串参数调用它,将无法工作:stringMichael="Michael";stringJordan="Jordan";ChangeArray(Michael,Jordan);//ThiswillNOTchangethevalueso

c# - OleDbCommand 参数顺序和优先级

过去40分钟我一直在调试这个查询,问题显然是参数的顺序。SELECT*FROMtblSomeThingWHEREid=@idANDdebut=@dtDebutANDfin=@dtFin然后我以这种方式添加参数,注意最后两个参数被调换了,我没有得到任何结果。cmd.Parameters.Add("@id",OleDbType.Integer).Value=idSociete;cmd.Parameters.Add("@dtFin",OleDbType.Date).Value=dateTraitementFin;cmd.Parameters.Add("@dtDebut",OleDbType.

c# - 将零参数作为参数传递——行为定义在哪里?

C#规范。允许你调用一个函数voidfoo(paramsint[]x)零参数。但是,我没有在C#Lang中找到。规范关于进一步的行为——foo会得到空数组或空引用吗?我还检查了MSDN——什么也没有。行为定义在哪里?注意:我不是在问VS的行为,我是在问语言的设计。 最佳答案 C#语言规范第7.4.1节(引用:C#3.0spec)Inparticular,notethatanemptyarrayiscreatedwhentherearezeroargumentsgivenfortheparameterarray.这是该节的最后一行