C#方法输出值

Com*_*007 1 c# c#-4.0

我是新的C#并且目前正在阅读Murach的C#2012.我遇到的方法为定义的参数赋值,我有点困惑.在其他语言中,如果方法需要返回多个值,则可以返回包含多个值的对象.但是我不确定如何在方法中使用"out".我也一直在关注MSDN在线资源,但仍不清楚如何使用"out".例如,如果我想编写一个接受四个参数的方法,我怎样才能让这个方法为定义为"out"的参数赋值.

private void calcValues(decimal decVal, out decimal decHigh, out decimal decMid, out decimal decLow)
{
    decimal highVal = 0.00M;
    decimal midVal = 0.00M;
    decimal lowVal = 0.00M;

    highVal = (decVal * decHigh);
    midVal = (decVal * decMid);
    lowVal = (decVal * decLow);

}//CALCVALUES METODH END
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我理解这种"外出"机制,我将非常感激.我已经对此进行了在线搜索,但无法在其上提出一个简单的例子.

谢谢.

Mar*_*ell 5

你只是...... 分配给他们:

decHigh = 0M;
decMid = 13M;
decLow = 42M;
Run Code Online (Sandbox Code Playgroud)

请注意,因为它们是out,所以在它们"明确分配"之前你不能从中读取它们; 他们在进入时的价值没有定义.这样调用者可以这样做:

decimal foo;
if(SomeMethod("bar", out foo)) {...}
Run Code Online (Sandbox Code Playgroud)

而不是必须分配任意值foo:

decimal foo = 0M;
if(SomeMethod("bar", ref foo)) {...}
Run Code Online (Sandbox Code Playgroud)

但是,正如你所说:out很难理解.您可能还会考虑返回具有 3个值的内容:

private SomeType CalculateValues(decimal decVal) {
    //... some maths...
    return new SomeType(...);
}
Run Code Online (Sandbox Code Playgroud)

  • @zmbq我不同意."Item3"到底意味着什么?我更喜欢有明智名字的东西.如果.NET允许"内部可见的结构匿名类型",那将是理想的. (2认同)