草庐IT

Parameters

全部标签

c# - 我应该尽可能使我的方法静态化吗?

我经常思考这个问题……这可能是个白痴问题,但还是要问。假设我有这个类:publicclassSomeClass{publicintAProperty{get;set;}publicvoidSomeMethod(){DoStuff(AProperty);}}这样做有什么好处吗:publicclassSomeClass{publicintAProperty{get;set;}publicstaticvoidSomeMethod(intarg){DoStuff(arg);}}唯一明显的优势是我现在可以直接访问SomeMethod。那么,在稍微重构允许的情况下,将这些类型的方法设为静态是一种好

c# - 使用负载平衡时如何锁定对象

背景:我正在使用C#编写一个将持久操作放入队列中的函数,每个操作分为3个步骤:1.数据库操作(更新/删除/添加数据)2.使用web服务进行长时间计算3.数据库操作(保存步骤2的计算结果)对步骤1中的同一个db表,检查db表的一致性,例如步骤1中的items相同(具体例子请看下面)为了避免脏数据或损坏,我使用了一个锁对象(一个静态单例对象)来确保这3个步骤作为一个整体事务来完成。因为当多个用户在调用该函数进行操作时,他们可能会在自己操作的不同步骤修改同一个db表而没有这个锁,例如user2在他的step1中删除了itemA,而user1在检查A是否仍然存在他的第3步。(附加信息:与此同时

c# - 可选参数后跟 Params

这个问题在这里已经有了答案:C#4.0,optionalparametersandparamsdonotworktogether(3个答案)关闭9年前。所以我看到可以有一个方法签名,其中第一个参数提供默认值,第二个参数是参数集合。我看不到的是实际使用第一个参数的默认值的方法。有可能吗?示例方法:voidWaitAllTask​​s(stringmessage="RunningTask.WaitAll",paramsTask[]tasks);我最初尝试在调用方法时省略消息参数,还尝试使用命名参数,这不适用于params。可以编译,但可以使用吗?

c# - 有趣的 "params of ref"功能,有什么解决方法吗?

我想知道对于值类型是否有任何类似的方法......publicstaticclassExtensionMethods{publicstaticvoidSetTo(thisBooleansource,paramsBoolean[]bools){for(inti=0;i那么这将是可能的:Booleana=true,b,c=true,d=true,e;b.SetTo(a,c,d,e);当然,这是行不通的,因为bool是值类型,所以它们作为值而不是引用传递给函数。除了将值类型包装成引用类型(通过创建另一个类)之外,还有什么方法可以在使用params修饰符时通过引用(ref)将变量传递给函数?

C# Oracle 存储过程参数顺序

有了这个PROCEDURE"ADD_BOOKMARK_GROUP"("NAME"INVARCHAR2,"BOOKMARK_GROUP_ID"INNUMBER,"STAFF_ID"INVARCHAR2,"MAX_NO"ININT,"NUMFOUND"OUTINT,"NEW_ID"OUTNUMBER)ISBEGINNEW_ID:=-1;SELECTCOUNT(*)INTONUMFOUNDFROMBOOKMARK_GROUP_TABLEWHERESTAFF_ID=STAFF_ID;IFNUMFOUND我发现有趣的是,如果我不按定义参数的顺序添加参数,例如OracleCommandcmd=ne

c# - 最佳实践 : ref parameter or return value?

其实我是做一个列表作为引用参数如下:publicstaticListListMethod(Listresult)我也看到有人这样做:publicstaticvoidListMethod(refListresult)如果我没记错的话,“my”方法也将list作为引用参数,您应该可以像“other”在他的方法中一样使用它。但在我看来,您输入一个参数,对它做一些事情并在方法返回值中返回它似乎更“干净”。支持或反对一种方法或另一种方法的任何好的论据? 最佳答案 可能您不需要使用ref-但是有区别的。通常当我看到人们使用ref作为引用类型参数

c# - 多次执行相同的 SQL 查询时重用 SqlCommand 是否更好?

当使用相同的查询但不同的参数查询数据库时,是否更好:一次性完成,还是创建两个单独的查询?单次使用示例:using(SqlCommandaddProduct=newSqlCommand(@"insertinto[Products].[Products]([Name],[Price])values(@name,@price)",sqlConnection)){//Insertthefirstproduct.addProduct.Parameters.AddWithValue("@name","Product1");addProduct.Parameters.AddWithValue("@p

c# - 在 C# 中将参数作为 final 传递

这可能是一个重复的问题。但无法在搜索中找到它在java中,为了将方法参数标记为常量,我们将其声明为final等效的C#关键字是什么?喜欢publicvoiddoSomeThing(finalobjectmyObject){//printmyobject} 最佳答案 这在C#中是不可能的-无法将传入的参数标记为常量。如果您有一个const需要对许多函数可用,为什么不使用正确的作用域(类作用域或全局作用域,如果需要)声明它? 关于c#-在C#中将参数作为final传递,我们在StackOve

c# - 如何在报表查看器中添加参数?

嗨!我在visualstudio2010中有一个表单应用程序,我想使用报表查看器创建一个报表并添加一些参数。我试图从代码中添加参数,但没有成功。我有这个错误:Tablix“Tablix1”的FilterExpression表达式引用字段“datastart”。报表项表达式只能引用当前数据集范围内的字段,或者如果在聚合内,则引用指定的数据集范围内的字段。Report2.rdlc:错误rsParameterReference:tablix“Tablix1”的FilterValue表达式引用了一个不存在的报告参数“datastart”。在我的代码中这样做:privatevoidSetRepo

c# - 在 BackgroundWorker 处理程序中使用参数

为了将数据传递给BackgroundWorker的DoWork,我使用了一个单独的包装类实例:MyParamsmpar=newMyParams();...mpar.Par1=par1val;mpar.Par2=par2val;mpar.Par3=par3val;...varworker1=newSystem.ComponentModel.BackgroundWorker();worker1.DoWork+=newDoWorkEventHandler(worker1_DoWork);worker1.RunWorkerCompleted+=newRunWorkerCompletedEven