Tag: out parameters

使用c#从存储过程读出参数时出现问题

我只是遇到一个奇怪的问题,我无法检索sql存储过程输出参数值。 我解决了这个问题将近2个小时。 代码很简单 using (var con = new SqlConnection(connectionString)) { con.Open(); SqlCommand cmd = new SqlCommand(“sp_mgsearach”, con); cmd.CommandType = CommandType.StoredProcedure; SqlParameter param1 = new SqlParameter(“@SearchTerm”, SqlDbType.VarChar); param1.Value = searchTerm; param1.Direction = ParameterDirection.Input; cmd.Parameters.Add(param1); SqlParameter param2 = new SqlParameter(“@start”, SqlDbType.Int); param2.Value = start; param2.Direction = ParameterDirection.Input; cmd.Parameters.Add(param2); SqlParameter param3 = new SqlParameter(“@end”, SqlDbType.Int); param3.Value = end; […]

C# – 如何将’out’参数传递给lambda表达式

我有一个带有以下签名的方法: private PropertyInfo getPropertyForDBField(string dbField, out string prettyName) 在其中,我根据给定的dbField找到关联值dbField 。 然后我想找到名称为prettyName所有属性(如果有的prettyName ,所以我试图执行以下操作: IEnumerable matchingProperties = getLocalProperties().Where(prop => prop.Name.Equals(prettyName) ); 但是,这会产生以下错误: 不能在匿名方法,lambda表达式或查询表达式中使用ref或out参数’prettyName’ 在我试图在Where lambda参数中使用prettyName的方法中, prettyName肯定是初始化的。 如果prettyName无法初始化为有效值,则return 。 我可以在这里做一些技巧让我在lambda表达式中使用prettyName吗? 编辑:如果重要的话,我正在使用.NET 3.5。

C#:如何使用带有“out”变量的generics方法

我想创建一个简单的通用函数 void Assign(out T result) { Type type = typeof(T); if (type.Name == “String”) { // result = “hello”; } else if (type.Name == “Int32”) { // result = 100; } else result = default(T); } 用法: int value; string text; Assign(value); // <<< should set value to 100 Assign(text); // <<< should set text […]

为什么匿名方法中不允许使用out参数?

这不是使用匿名方法的ref或out参数调用方法的欺骗 我想知道为什么在匿名方法中不允许输出参数。 不允许ref参数对我来说更有意义,但out参数不是那么多。 你对此有何看法?

什么时候C#’out’或’ref’参数的值实际返回给调用者?

当我对out或ref参数进行赋值时,是否会立即将值赋给调用者提供的引用,还是在方法返回时分配给引用的out和ref参数值? 如果方法抛出exception,则返回值吗? 例如: int callerOutValue = 1; int callerRefValue = 1; MyMethod(123456, out callerOutValue, ref callerRefValue); bool MyMethod(int inValue, out int outValue, ref int refValue) { outValue = 2; refValue = 2; throw new ArgumentException(); // Is callerOutValue 1 or 2? // Is callerRefValue 1 or 2? }

C#中的参数

当我想在C#中获取内存总值时,我在MSDN中找到了一个kernel32函数来调用系统中的数据。 MSDN以这种方式声明函数: [return: MarshalAs(UnmanagedType.Bool)] [DllImport(“kernel32.dll”, CharSet = CharSet.Auto, SetLastError = true)] static extern bool GlobalMemoryStatusEx(ref MEMORYSTATUSEX lpBuffer); 但这不能正常工作。 我将“ref”改为“[In,Out]”然后它正常工作。 怎么能告诉我C#中的[In,Out]参数是什么?

C#’out’参数有用的真实示例?

我正在阅读核心C#编程结构,并且难以绕过out参数修饰符。 我知道通过阅读它做了什么,但我想在使用它时想到一个场景。 有人能给我一个真实世界的例子吗? 谢谢。

如何避免在匿名方法块中使用out参数?

以下方法无法编译。 Visual Studio警告“可能无法在匿名方法中使用out参数”。 WithReaderLock(Proc action)方法采用delegate void Proc() 。 public Boolean TryGetValue(TKey key, out TValue value) { Boolean got = false; WithReaderLock(delegate { got = dictionary.TryGetValue(key, out value); }); return got; } 获得这种行为的最佳方法是什么? (请不要提供有关线程安全词典的建议,这个问题一般用于解决out参数问题)。