C # from parameter options?

Hi, I have a C # code that looks like this:

int someNumber;
Thing someThing;

doStuff(out someNumber);
someThing = new Thing(someNumber); 

I would like to know if there is a way to remove someNumber and instantiate someThing directly in the argument arguments.

Editing the actaul code returns me 8 parameters, but I was just trying to keep it simple, so this is more like:

int someNumber1, someNumber2, somNumber3, someNumber4,
someNumber5, someNumber6, someNumber7, someNumber8;

Thing someThing1, someThing2, someThing3, someThing4,
someThing5, someThing6, someThing7, someThing8;

doStuff(out someNumber1, out someNumber2, out someNumber3, out someNumber4,
out someNumber5, out someNumber6, out someNumber7, out someNumber8);

someThing1 = new Thing(someNumber1); etc.....................
+3
source share
7 answers

Well, if you do this regularly, you can do something like:

public delegate void OutAction<T>(out T value);

public TResult UseOut<TIntermediate,TResult>
    (OutAction<TIntermediate> outAction,
     Func<TIntermediate,TResult> selector)
{
    TIntermediate tmp;
    outAction(out tmp);
    return selector(tmp);
}

Then name it (note that doStuffthere is a group of methods here - absence () intentionally!):

Thing someThing = UseOut(doStuff, x => new Thing(x));

I do not necessarily say that it is a good idea, just consider something.

EDIT: , - out , , , .....

EDIT: :

public TResult ReturnOut<TResult>(OutAction<TResult> outAction)
{
    TResult tmp;
    outAction(out tmp);
    return tmp;
}

:

Thing someThing = new Thing(ReturnOut(doStuff));
+5

, -, , out ? ( ).

:

someThing = new Thing(doStuff());
+3

. someThing byref, doStuff , . , , .

, doStuff, :

var thing = new Thing(doStuff());

, TryParse . , , .

+1

, , , doStuff . ? , , , , .

0

, , , .

, . int.

0

List<Thing>

?

, , .

0

ck-, someNumber ints, DoStuff() a List<int> IEnumerable<int>, , Thing. someNumber , , . , Thing, ck, DoStuff() List<Thing> IEnumerable<Thing>.

0

Source: https://habr.com/ru/post/1703801/


All Articles