2015-11-18 2 views
0

Я хотел вернуть два разных значения из одной и той же функции, но оказалось, что вы можете возвращать только 1, но есть и другие вокруг него, как с использованием параметров кортежа и вывода ... Я не знаю Не понимаю, как их структурировать, а синтаксис запутан. Я несколько раз пытался заставить его работать, используя пробную версию и ошибку, но каждый раз, когда программа даже не запускается. Если вы можете показать мне решение, которое будет высоко оценено. Мне удалось вернуть строку [] карты, но теперь мне нужно понять, как я могу вернуть ИНТ [] значение из одной и тех же функцийНесколько разных типов возврата от одной и той же функции

namespace Testing2._0 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      string[] cards = ShuffleCardSystem(); 
      Dealing(cards); 
      Format(); 
      Console.ReadLine(); 

     } 
     static void Format() 
     { 
      //Not important 
     } 


     } 
     static string [] ShuffleCardSystem() 
     { 
      string[] ranks = new string[13] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" }; 
      int rankCounter = 0; 
      string []suits = new string[4] { "♠", "♣", "♦", "♥" }; 
      int suitsCounter = 0; 
      int shuffle; string temp; 
      Random rnd = new Random(); 
      int[] value = new int[52]; 
      string numbers = string.Empty; 
      int convert; 
      string[]cards = new string[52]; 
      for (int i = 0; i < 52; i++) 
      { 
       cards[i] = ranks[rankCounter] + suits[suitsCounter]; 
       rankCounter++; 
       if (rankCounter == 13) 
       { 
        rankCounter = 0; 
        suitsCounter += 1; 
       } 
      } 
      for (int i = 51; i >= 0; i--) 
      { 
        numbers= string.Empty; 
       shuffle = rnd.Next(0, i); 
       temp = cards[shuffle]; 
       cards[shuffle] = cards[i]; 
       cards[i] = temp; 
       for (int position =0; position<cards[i].Length; position++) 
       { 
        if (char.IsDigit(cards[i][position])) 
        { 
         numbers+=cards[i][position]; 
         convert= Convert.ToInt32(numbers); 
         value[i]= convert; 
         if (value[i] ==1) 
         { 
          value [i]=11; 
         } 

        } 
        if (cards[i].Any(char.IsLetter)) 
        { 
         value[i] = 10; 
        } 
       } 
      } 
      } 

      return cards; // I want to return value 

     } 
     static void Dealing(string[] cards) 
     { 
      //other unrelated code... 
       } 

      } 
     } 
    } 
} 
+2

Почему вы не возвращаете класс? –

+0

Попробуйте вернуть массив объектов. –

ответ

0
public class Shuffled 
{ 
public string[]cards{get;set;} 
public int[] values{get;set;} 
} 

C# является объектно-ориентированным языком. Очень часто возвращать объект, содержащий ваши данные из функций.

static Shuffled ShuffleCardSystem() 
+0

Простите, не совсем поняли эту концепцию, поэтому я создал новый класс под названием shuffled, затем изменил «string [] ShuffleCardSystem()» на «static Shuffled ShuffleCardSystem()»? Если это так, то что мне делать с объявлением строки [] в моей главной функции? @ AD.Net –

Смежные вопросы