Я пишу новый BOT для ставок на C# для нового API Betfair и для решения некоторых из грехов прошлого BOT, в котором было много циклов и переданных значений методы как параметры, я пытаюсь разбить все как можно больше.Что такое стандартный способ передачи объектов по ссылке в C#
Один метод делает одно и т. Д. Я также хочу определить объект ставки, который содержит всю мою информацию о бегуне/гонке/ставке в начале моего процесса задания ставок и передает его каждому методу (PlaceBet, CancelBet, CheckBetStatus и т. Д.), Где эти значения будут изменены. Я хочу сделать это, поэтому в конце процесса я знаю, что все значения в моем одиночном объекте Bet верны, поскольку на данный момент я использую множество переменных, которые смешиваются по пути.
Как я не проделал много работы, передавая объекты в качестве ссылки в C#, прежде чем я хотел знать стандартный/лучший/официальный/самый быстрый способ передачи объектов по ссылке.
ли я просто сделать что-то вроде этого
public struct Bet = {
public long BetID;
public double BetAmount;
public int MarketID;
public string BetStatus;
}
public BetfairBOT(){
Bet bet = new Bet;
// get info from DB
bet.BetID = 10002323;
bet.BetAmount = 10.00;
bet.MarketID=12342;
bet.BetStatus="";
// get current bet status;
this.GetBetStatus(ref bet);
// if not matched place bet
if(bet.BetStatus != "M"){
this.PlaceBet(ref bet);
}
// save to DB
this.SaveBet(ref bet);
}
private void GetBetStatus(ref Bet bet){
// do some stuff
bet.BetStatus = "U";
return;
}
или я должен использовать объект Bet в качестве возвращаемого типа метода и вернуть его каждый раз, например,
// get current bet status; Setting the bet object to the return object which is passed in by reference
bet = this.GetBetStatus(ref bet);
private Bet GetBetStatus(ref Bet bet){
// do some stuff
bet.BetStatus = "U";
// return my changed object
return bet;
}
Или я должен это сделать каким-то другим способом?
Также следует использовать параметр «out» вместо «ref»?
Я просто хочу знать «принятый» способ «наилучшей практики» передавать объекты по ссылке и возвращать их, чтобы я не терял никаких данных на этом пути.
Кстати, нет лучшего способа форматировать код в этом редакторе? Я пробовал отступы некоторых конечных скобок, но они просто не хотят быть частью блока кода над ними.
Есть ли [код] теги, которые я мог бы использовать вместо этого?
Благодарим за любую помощь заранее.
Роб
Ну, глядя на ваш код, возможно, вы хотите использовать 'class', а не' struct'. Тогда вам больше не нужно использовать 'ref', потому что классы« всегда »передаются по ссылке. – Luaan
Возможный дубликат [Когда использовать ref vs out] (http://stackoverflow.com/questions/1516876/when-to-use-ref-vs-out) – ken2k
@Luaan - Классы не всегда передаются по ссылке. Если ключевые слова ref (или out) не используются, механизм передачи по умолчанию имеет значение. Когда передается эталон _type_ _ по значению_, копия ссылки передается. –