Tag: 参数传递

如何将表值参数从C#传递给Oracle存储过程

我有一个名为CREATE_CASE_EXL的Oracle存储过程: PROCEDURE CREATE_CASE_EXL(P_RICdata RICTab, P_sACTION_TYPE IN VARCHAR2); 其中RICTab是自定义类型: TYPE RICTab IS TABLE OF MMSRRicRec INDEX BY BINARY_INTEGER; TYPE MMSRRicRec IS RECORD ( RIC VARCHAR2(32), FID_NO NUMBER(8), REC_ID NUMBER(8), MMS_ACTION VARCHAR2(1) ); 我在PL / SQL中运行此代码来执行CREATE_CASE_EXL : DECLARE pTE_RICS RICTab BEGIN pTE_RICS(1).RIC := ‘RIC1’; pTE_RICS(1).FID_NO := NULL; pTE_RICS(1).REC_ID := 3; pTE_RICS(1).MMS_ACTION := ‘A’; pTE_RICS(1).RIC := ‘RIC2’; pTE_RICS(1).FID_NO […]

如何将任意方法(或委托)作为参数传递给函数?

我需要能够将任意方法传递给某个函数myFunction : void myFunction(AnyFunc func) { … } 应该可以使用其他静态,实例,公共或私有方法甚至委托来执行它: myFunction(SomeClass.PublicStaticMethod); myFunction(SomeObject.PrivateInstanceMethod); myFunction(delegate(int x) { return 5*x; }); 传递方法可以具有任意数量的参数和任何返回类型。 还应该可以通过reflection了解myFunction的实际参数数量及其类型。 myFunction定义中的AnyFunc会满足这些要求吗? 有几个重载版本的myFunction是可以接受的。

传递* Awaitable *匿名函数作为参数

代码优先。 这就是我想要做的。 我很接近,但我想我只需要修改我在UpdateButton方法中定义参数的方式。 private async void UpdateButton(Action post) { if (!await post()) ErrorBox.Text = “Error posting message.”; } private void PostToTwitter() { UpdateButton(async () => await new TwitterAction().Post(“Hello, world!”)); } private void PostToFacebook() { UpdateButton(async () => await new FacebookAction().Post(“Hello, world!”)); } 不幸的是, !await post()不起作用,因为“Type’void’是不可行的。” 所以问题是,如何在此方法中定义我的参数以支持等待参数? 这是TwitterAction()。Post()的定义方式…… public virtual async Task Post(string messageId){…}

在C#中使用params的成本

有没有人建议在C#中使用params进行方法参数传递。 我正在考虑为前6个参数进行重载,然后使用paramsfunction进行7次重载。 我的理由是避免paramsfunction需要额外的数组分配。 这适用于一些高性能的实用方法。 任何建议? 创建所有重载是浪费代码吗?

如何从Forms之间的TextBox传递字符串值?

我有两种forms:Form1是我的应用程序,Form2是登录页面。 我想将输入到Form2上的用户名文本框(LoginTbox)的值传递给Form1。 这就是我到目前为止所拥有的。 没有收到任何错误,但似乎没有任何错误。 我已经尝试过构造函数,但似乎无法让它工作。 我究竟做错了什么? Program.cs中 static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form2 fLogin = new Form2(); if (fLogin.ShowDialog() == DialogResult.OK) Application.Run(new Form1()); else Application.Exit(); } 表格2(登录表格) public string strVar = string.Empty; public Form2() { InitializeComponent(); } public void button1_Click(object sender, EventArgs e) { strVar = loginTbox.Text.ToString(); string _pass = textBox2.Text; string conStr = […]

linq列出并获取每行的值

对于测试,我需要使用一些参数设置制作列表。 此列表不是根据定义预先定义为类型和/或其中的内容。 bool[] trueOrFalse = new bool[] { true, false }; int[] para1 = new int[] { 1, 2, 3 }; int[] para2 = new int[] { 5, 6, 7 }; int[] para3 = new int[] { 1, 2, 3 }; int[] para4 = new int[] { 5, 7, 9 }; List test = (from […]

如何将任何方法作为另一个函数的参数传递

在Aclass,我有 internal void AFoo(string s, Method DoOtherThing) { if (something) { //do something } else DoOtherThing(); } 现在我需要能够将DoOtherThing传递给AFoo() 。 我的要求是DoOtherThing可以有任何返回类型的签名几乎总是无效。 类似于B类的东西, void Foo() { new ClassA().AFoo(“hi”, BFoo); } void BFoo(//could be anything) { } 我知道我可以通过Action或实现代表来实现这一点(如许多其他SOpost中所见)但如果B类函数的签名未知,怎么能实现呢?

参数validation最佳实践

想象一下,你有一个应用程序,它是你所有业务逻辑的某种前端 。 这个前端有很多依赖它的DLL,并且这些DLL中的方法可以在前端单次执行给定方法时重复调用。 如果您的应用程序的用户不直接访问这些DLL,您应该…… 1)冒险(小)性能命中并validation每种方法中的参数,即使您最终可以validation相同参数约5次; 要么 2)冒险意外行为并假设,当您validation输入参数时,传入和传出内部代码的所有其他可能参数都是有效的(例如,既不为null也不为空)? 编辑:举个例子,假设你有一个Regex RegexA和一个方法 internal bool Matches(string expression) { return RegexA.IsMatch(expression); } IsMatch将在null参数上抛出exception,但不在空字符串上抛出exception。 如果您事先知道空字符串永远不会与该正则表达式匹配,那么您之前if (String.IsNullOrEmpty(expression))应该使用if (String.IsNullOrEmpty(expression)) ,即使知道它可能在IsMatch框架方法中被validation为无效? 在这种情况下,您显然正在重复validation,但重复它还是冒风险更好?

SqlDataReader参数不起作用

我有一个Windows窗体,我要求用户在textbox1中输入pcname,然后尝试使用SqlDataReader从数据库读取以获取pc ipaddress然后将pc驱动器映射到我的本地PC。 但由于某些原因,当我在SQL参数中使用文本框时,它无法正常工作。 但是,当我用实际的pcname替换textbox1.text ,它工作正常。 希望有人可以帮我找出参数无法正常工作的原因。 这是我的代码: public void button1_Click(object sender, EventArgs e) { string results = “”; using (SqlConnection cs = new SqlConnection(@”***removed connection string***”)) { cs.Open(); string query = “select stationipaddress from station where stationname = @StationName”; using (SqlCommand cmd = new SqlCommand(query, cs)) { // Add the parameter and set its value […]

将此作为静态方法中的参数传递

我在使用Visual C#中的一些代码遇到一些问题对于Windows Phone问题不在于它不起作用,因为它确实如此,但我不明白如何在静态类中创建一个静态方法,其中给自己一个参数: public static void MethodONe( this Timeline animation ) { //this class does not extend the TimeLine class, and is not connected to it in any //such way. animation.MethodTwo( ); } public static void MethodTwo( this Timeline animation ) { someCode( ); } 这个参数传递是如何被调用的,它究竟是做什么的?