标签: out

C#输出参数性能

出来的参数C#有任何性能影响我应该知道的?(像例外)

我的意思是,out在循环中使用一个参数的方法是一个好主意,每秒运行几百万次?

我知道它很丑,但我使用它的方式与Int32.TryParse使用它们相同- 返回一个bool告诉我是否有一些验证是成功的,并且如果成功则有一个out包含一些额外数据的参数.

c# parameters out

21
推荐指数
3
解决办法
1万
查看次数

使用out和ref参数时的装箱和拆箱

当方法接受ValueType的out/ref参数时,是否会发生装箱/取消装箱?

c# boxing unboxing ref out

18
推荐指数
1
解决办法
3168
查看次数

C#是否支持inout参数?

在C#中,我使用a StreamReader来读取文件,每行一行.我还保留当前行的编号int,以报告可能的错误消息.

阅读每一行都会进行一些测试(例如,开头的行#是注释,需要跳过),所以我打算将整个阅读过程放在一个函数中,这将继续阅读,直到它遇到一个有用的行,然后返回该行.如果遇到EOF它就会返回null.

当我将此函数定义为时,我认为我很聪明string read(StreamReader sr, out int lineNumber),但现在事实证明C#将无法像lineNumber++在函数内部那样做.它假定变量尚未分配,可能是因为它无法知道它是否已在此函数调用之前分配.

所以,问题很简单:我如何指定这个变量是一个inout参数(我认为这是一个术语;我听说它是​​在其他编程语言的上下文中提到的)?这首先是可能的吗?我绝对不会成为lineNumber班上的一员,所以这不是一个选择.

c# parameters function out

17
推荐指数
1
解决办法
1万
查看次数

在C#4.0中,为什么方法中的out参数不能协变?

鉴于这个神奇的界面:

public interface IHat<out TRabbit>
{
    TRabbit Take();
}
Run Code Online (Sandbox Code Playgroud)

而这个类层次结构:

public class Rabbit { }

public class WhiteRabbit : Rabbit { }
Run Code Online (Sandbox Code Playgroud)

我现在可以编译这个:

IHat<WhiteRabbit> hat1 = null;
IHat<Rabbit> hat2 = hat1;
Run Code Online (Sandbox Code Playgroud)

哪个好.但是如果我以不同的方式定义界面呢:

public interface IHat<out TRabbit>
{
    bool Take(out TRabbit r);
}
Run Code Online (Sandbox Code Playgroud)

我指出帽子可能是空的,使用单独的布尔返回值(之前的版本可能会从空帽子返回一个空兔子).但我仍然只输出一只兔子,所以没有做任何与以前版本逻辑上不同的事情.

CTP中的C#4.0编译器在接口定义中给出了错误 - 它要求'out'方法参数为不变类型.是否有一个强硬的原因,为什么不允许这样做,或者是否可以在未来版本中解决这个问题?

c# out covariance c#-4.0

16
推荐指数
1
解决办法
1821
查看次数

在声明点使用变量作为out参数

在阅读对答案的评论时,我看到了以下构造来声明和初始化变量:

int variable = int.TryParse(stringValue, out variable) ? variable : 0;
Run Code Online (Sandbox Code Playgroud)

在C#中这是允许的,正确的和明确定义的吗?引擎盖下会发生什么?以下是怎么回事?

  1. variable第一初始化为零?
  2. 然后传递给int.TryParse(赋值)?
  3. 然后可选择阅读(如果int.TryParse返回true)?
  4. 然后,再次分配/初始化?

c# out language-lawyer

15
推荐指数
3
解决办法
660
查看次数

我怎样才能缩进cout输出?

我正在尝试打印二叉树

void print_tree(Node * root,int level )
 {
    if (root!=NULL)  
    {  
        cout<< root->value << endl;
    }
    //...
}
Run Code Online (Sandbox Code Playgroud)

如何缩进输出以使用' - '字符缩进每个值.

c++ out

13
推荐指数
1
解决办法
2万
查看次数

为什么C#out泛型类型参数违反协方差?

我不清楚为什么下面的代码片段不是covarient?

  public interface IResourceColl<out T> : IEnumerable<T> where T : IResource {

    int Count { get; }

    T this[int index] { get; }

    bool TryGetValue( string SUID, out T obj ); // Error here?
    }
Run Code Online (Sandbox Code Playgroud)

错误1无效方差:类型参数"T"必须在'IResourceColl.TryGetValue(string,out T)'上不变地有效.'T'是协变的.

我的界面仅在输出位置使用模板参数.我可以轻松地将此代码重构为类似的东西

  public interface IResourceColl<out T> : IEnumerable<T> where T : class, IResource {

    int Count { get; }

    T this[int index] { get; }

    T TryGetValue( string SUID ); // return null if not found
    }
Run Code Online (Sandbox Code Playgroud)

但我试图了解我的原始代码是否真的违反了协方差,或者这是协方差的编译器还是.NET限制.

c# out covariance

12
推荐指数
1
解决办法
3533
查看次数

mysql"不是变量或新的伪变量"消息

我正在尝试创建一个程序,它将输入数据然后在OUT参数中返回一条消息,但是我收到此消息"参数5用于例行医院.alextest10不是BEFORE触发器中的变量或NEW伪变量"

我有这个作为我的程序:

create procedure alextest10
(IN a_patid CHAR(3), IN a_patnam VARCHAR(12), IN a_consno CHAR(3), IN a_ward CHAR(2),
OUT a_message VARCHAR(50))
BEGIN
set a_message = 'Database updated';
INSERT INTO patient (patient_id, patient_name, consultant_no, ward_no)
values (a_patid, a_patnam, a_consno, a_ward);
end!
Run Code Online (Sandbox Code Playgroud)

这是我的呼叫命令:

call alextest10 ('p99', 'Madeuppy', '999', 'w9', a_message)!
Run Code Online (Sandbox Code Playgroud)

你能帮我吗?

非常感激!

mysql out

12
推荐指数
1
解决办法
2万
查看次数

println方法 - 最后2个字母(l&n)代表什么?

我想它与新println()行功能('\n')相关,但是在缩写的基于字母的形式中,这nl不是ln.谢谢你的任何评论.

java out println

11
推荐指数
1
解决办法
7324
查看次数

输出C中的参数

void swap(int &first, int &second){
    int temp = first;
    first = second;
    second = temp;
}
Run Code Online (Sandbox Code Playgroud)

//////

int a=3,b=2;
swap(a,b);
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,C编译器抱怨"void swap(int&first,int&second)"在"(/ {"之前有一个语法错误,如缺少"&".

我不明白为什么?C不支持此功能吗?

c out parameter-passing

10
推荐指数
2
解决办法
2万
查看次数