Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача аргументов из класса, в функцию другого класса 
:(
    Опции темы
ДобренькийПапаша
Дата 3.8.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: нет
Всего: 7



Хочу работать со всеми переменными из класса values в классе Game, конкретно, например хочу передать все массивы в функцию comp. Менять private на public не хочу!!! Как сделать?

Код

using System;
using System.Collections.Generic;
using System.Text;

namespace _21Point
{
    public class values
    {
        private int counter;
        private int label;
        private int[] cards=new int[52];
        private int[] compcards = new int[5];
        private int[] usercards = new int[5];
        private int[] bcards = new int[10];
        public void val()
        {
            this.counter=2;
            this.label = 3;
            for (int i = 0; i < bcards.Length; i++)
            {                                       //Constructor
                bcards[i] = 0;
            }
            for (int i = 0; i < cards.Length; i++)
            {
               
                cards[i] += counter;
                if (i == label)
                {
                    counter += 1;
                    label += 4;
                }
            }
            for (int i = 0; i < cards.Length; i++)
            {                                       //Constructor
                Console.Write("{0},", cards[i]);
            }
        }
     }

    class Game
    {
      
        public void Comp()
        {
            
        }   
        
        public static void Main()
        {
            values ex=new values();
            ex.val();
        }
    }
}



--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
mrHunter
Дата 3.8.2008, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.7.2007

Репутация: нет
Всего: нет



Выход в использовании свойств. Прочитай о них в книге.
PM MAIL   Вверх
1stain
Дата 3.8.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 486
Регистрация: 30.7.2007
Где: Киев - Харьков

Репутация: 8
Всего: 40



создай в классе Game делегат и передавай его в класс Values:
Код

    public class Values
    {
        private int counter;
        private int label;
        private int[] cards = new int[52];
        private int[] compcards = new int[5];
        private int[] usercards = new int[5];
        private int[] bcards = new int[10];

        public void val()
        {
            this.counter = 2;
            this.label = 3;
            for (int i = 0; i < bcards.Length; i++)
            {                                       //Constructor
                bcards[i] = 0;
            }
            for (int i = 0; i < cards.Length; i++)
            {

                cards[i] += counter;
                if (i == label)
                {
                    counter += 1;
                    label += 4;
                }
            }
            for (int i = 0; i < cards.Length; i++)
            {                                       //Constructor
                //Console.Write("{0},", cards[i]);
            }
        }

        public void ProcessDelegate(Delegate del)
        {
            List<int[]> delegateParameter = new List<int[]>();
            delegateParameter.Add(this.cards);

            del.DynamicInvoke( delegateParameter );
        }

        public void PrintCards()
        {
            foreach (int card in cards)
            {
                Console.WriteLine(card);
            }
        }
    }

    class Game
    {
        public delegate void CompDelegate(List<int[]> intArrays);
        public void Shuffle( List<int[]> intArrays)
        {
            for (int i = 0; i < intArrays.Count; i++)
    {
                // Здесь твой алгоритм перемешивания колоды
                for (int j = 0; j < intArrays[i].Length; j++)
                {
                    intArrays[i][j] = 0;
                }
    } 
        }

        public static void Main()
        {
            Values ex = new Values();
            ex.val();
            ex.PrintCards();
            Console.ReadLine();

            Game g = new Game();
            Game.CompDelegate comp = new Game.CompDelegate(g.Shuffle);
            ex.ProcessDelegate(comp);

            ex.PrintCards();
        }
    }



--------------------
Все знают, что это невозможно. Но вот приходит невежда, которому это неизвестно - он-то и делает открытие. (Albert Einstein)
user posted image
PM MAIL   Вверх
mr.DUDA
Дата 3.8.2008, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Три варианта:
1) сделать поля класса values с модификатором internal
2) вложить класс Game в класс values
3) добавить в класс values public-свойства только для чтения, возвращающие поля


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0715 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.