forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Классы это типы? (http://forum.boolean.name/showthread.php?t=13558)

reyn90 22.10.2010 07:57

Классы это типы?
 
Прочитал тут что класс используют как список.
PHP код:

using System

namespace 
test 

    
//Начало класса 
    
class Worker 
    

        public 
int age 0
        public 
string name
    } 
    
//Конец класса 
    
class Test 
    

        [
STAThread
        static 
void Main(string[] args
        { 
            
Worker wrkl = new Worker(); 
            
wrkl.age 30
            
wrkl.name "Петров Иван Сергеевич"
            
Console.WriteLine(wrkl.name " - " wrkl.age " года"); 
        } 
    } 


Это похоже на списки в blitzbasic
PHP код:

Type Worker
Field age
Field name
End Type 

и т.д.

Я так понимаю что скрипт я создаю как список способностей и характеристик для объекта? Или я не совсем правильно понял? Если всё так, то что за двоеточие в юнити и надпись MonoBehoviour?

h1dd3n 22.10.2010 10:29

Ответ: Классы это типы?
 
Цитата:

Прочитал тут что класс используют как список.
Класс это описание какого-либо объекта. Например ты можешь создать класс Player и написать метод обработки его коллизий с другими объектами (к примеру пусть там где они соприкоснулись будет взрыв).
Цитата:

что за двоеточие в юнити и надпись MonoBehoviour?
Это значит ты наследуешь свой класс от класса MonoBehaviour. Это дает тебе возможность использовать игровые события (OnCollisionEnter и т.д.).

pax 22.10.2010 11:22

Ответ: Классы это типы?
 
Типами в C# называются классы, структуры, энумераторы, интерфейсы, массивы и т.д. Другое название - объекты (Термин ООП). Даже типы float, int, string - это объекты. Можно например использовать функции типов тикие как string.Format(), float.Parse() и т.д.

Как список возможно твой класс был использован таким образом:
PHP код:

using System;  
using System.Collections.Generic

namespace 
test  
{  
    
//Начало класса  
    
public class Worker  
    
{  
        public 
int age 0;  
        public 
string name;  
    }  
    
//Конец класса  


    
class Test  
    
{  
        
// Объявление и инициализация списка
        
public List<Workerworkers = new List<Worker>();

        [
STAThread]  
        static 
void Main(string[] args)  
        {  
            
Worker wrkl = new Worker();  
            
wrkl.age 30;  
            
wrkl.name "Петров Иван Сергеевич";  

            
// Добавление первого элемента списка
            
workers.Add(wrkl);

            
wrkl = new Worker();  
            
wrkl.age 40;  
            
wrkl.name "Иванов Петр Сергеевич";  

            
// Добавление второго элемента списка
            
workers.Add(wrkl);
            
            
// Перебор всех элементов списка
            
foreach(Worker worker in workers)
            {
                 
Console.WriteLine(worker .name " - " worker .age " года"); 
            }

            
// Очистка списка
            
workers.Clear();
        }  
    }  


А про наследование тебе уже сказали, чтобы его понять надо попробовать. MonoBehoviour - это класс компонента объектов, которые получает события. Ты их уже писал - это Update, FixedUpdate, Awake, OnGUI и т.д. Плюс все открытые поля класса отображаются и назначаются в инспекторе Unity, если Unity поддерживает этот тип данных.

Да, по C# задавать вопросы в теме по C#.

reyn90 22.10.2010 14:29

Ответ: Классы это типы?
 
Цитата:

Сообщение от h1dd3n (Сообщение 165566)
Это значит ты наследуешь свой класс от класса MonoBehaviour. Это дает тебе возможность использовать игровые события (OnCollisionEnter и т.д.).

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Цитата:

Сообщение от pax (Сообщение 165574)
А про наследование тебе уже сказали, чтобы его понять надо попробовать. MonoBehoviour - это класс компонента объектов, которые получает события. Ты их уже писал - это Update, FixedUpdate, Awake, OnGUI и т.д. Плюс все открытые поля класса отображаются и назначаются в инспекторе Unity, если Unity поддерживает этот тип данных.

C# нельзя использовать те функции которые нужны для Unity и MonoBehoviour даёт такую возможность. Кажется я понял. Если неправ поправте.

pax 22.10.2010 14:35

Ответ: Классы это типы?
 
Просто создав класс, ты не получишь никаких сообщений. Получение сообщений (событий) класс приобретает тогда, когда ты наследуешься от класса, который генерирует эти события, в данном случае - MonoBehoviour. Т.е. твой класс приобретает все способности базового класса, от которого выполняется наследование.

reyn90 22.10.2010 14:52

Ответ: Классы это типы?
 
Значит без него мой код не поймёт что я хочу.

pax 22.10.2010 16:14

Ответ: Классы это типы?
 
Цитата:

Сообщение от reyn90 (Сообщение 165608)
Значит без него мой код не поймёт что я хочу.

Скорее наоборот: Без наследования от класса MonoBehaviour Unity не сможет назначить его объекту средствами DragAndDrop. Т.е. класс не будет являться компонентом для GameObject'ов

humpty 30.10.2010 06:44

Ответ: Классы это типы?
 
По мнению Теория объектов Карделли Абади : классы это не типы.

Карделли разрабатывал сишарп

http://lucacardelli.name/indexMe.html


Часовой пояс GMT +4, время: 00:13.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot