Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2015, 11:40   #11
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
    public override string ToString()
    {
        return "...";
    }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.05.2015, 11:55   #12
accncc
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Код:
    public override string ToString()
    {
        return "...";
    }
Код:
public class SomeClassName
{
    public string Name { get; set; }
    public int Size { get; set; }
    public int Position { get; set; }
    public string Text { get; set; }
    public Action Fun { get; set; }
}


public class Array {

    public string s;

    public List<SomeClassName> yourArray = new List<SomeClassName>();

    public override string ToString()
    {
        string s = yourArray.ToString();
        return s;
    }
Верно ли я понял?

а вызываю так
Код:
(new Array().yourArray).ToString()
но что то не так сделал, потому что не работает)
accncc вне форума Ответить с цитированием
Старый 20.05.2015, 12:01   #13
accncc
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 20
По умолчанию

вот весь код:
Код:
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;



public class SomeClassName
{
    public string Name { get; set; }
    public int Size { get; set; }
    public int Position { get; set; }
    public string Text { get; set; }
    public Action Fun { get; set; }

}





public class Array {

    public string s;

    public List<SomeClassName> yourArray = new List<SomeClassName>();

    public override string ToString()
    {
        string s = yourArray.ToString();
        return s;
    }

    void test_function(){ Debug.Log( " gggggggggg ");}

	void Start () {
        yourArray.Add(new SomeClassName
        {
            Name = "abc",
            Size = 123,
            Position = 123,
            Text = "abc",
            Fun = test_function
        });
        yourArray.Add(new SomeClassName
        {
            Name = "abc2",
            Size = 1232,
            Position = 1232,
            Text = "abc",
            Fun = test_function
        });
        yourArray.Add(new SomeClassName
        {
            Name = "abc3",
            Size = 1233,
            Position = 1233,
            Text = "abc",
            Fun = test_function
        });

        for (int i = 0; i < yourArray.Count; i++)
        {
            yourArray[i].Fun();
            //Debug.Log(yourArray[i].Name + " gggggggggg ");
        }
        //yourArray.RemoveAt(0);  // Removes the element at index 5. 
	}
	
	// Update is called once per frame
	void Update () {
	}
}






public class Pc_characters_control : MonoBehaviour
{
	void Update () {

            new UBUTUBU().Log("1s" + (new Array().yourArray).ToString());

        }
}
accncc вне форума Ответить с цитированием
Старый 20.05.2015, 12:14   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В SomeClassName ToString надо, в нем соответственно возвращать строку с значениями свойств класса.

Тогда будет работать
Код:
Console.WriteLine(yourArray[i]); // тоже самое, что Console.WriteLine(yourArray[i].ToString())
Да, еще мне почему-то казалось, что при yourArray.ToString() оно выведет ToString() всех объектов (может в Java так). Оказывается, что нет.
Для этого придется унаследовать List<SomeClass> и в нем ToString тоже переопределить (ну или только в нем).

Код:
class MyList : List<SomeClass>
{
        public override string ToString()
        {
            return String.Join(", ", this);
        }
}
Вместо ToString конечно можно и любой другой метод возвращаюший строку создать, просто тогда Console.WriteLine сам не вызовет его.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 20.05.2015 в 12:21.
Alex11223 вне форума Ответить с цитированием
Старый 20.05.2015, 12:43   #15
accncc
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 20
По умолчанию

Оказываться
Код:
public class Pc_characters_control : MonoBehaviour
{
	void Update () {

            new UBUTUBU().Log("1s" + (new Array().yourArray).Count );

        }
}
отдает нам 0
массив не пустой! проверял!
Почему?


вот полный код где мы тоже получим ноль
Код:
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;



public class SomeClassName
{
    public string Name { get; set; }
    public int Size { get; set; }
    public int Position { get; set; }
    public string Text { get; set; }
    public Action Fun { get; set; }

}





public class Array
{


    public List<SomeClassName> yourArray = new List<SomeClassName>();


    public void test_function() { Debug.Log(" gggggggggg "); }

    public IEnumerator Startu()
    {
        yield return yourArray;

        yourArray.Add(new SomeClassName
        {
            Name = "abc",
            Size = 123,
            Position = 123,
            Text = "abc",
            Fun = test_function
        });
        yourArray.Add(new SomeClassName
        {
            Name = "abc2",
            Size = 1232,
            Position = 1232,
            Text = "abc",
            Fun = test_function
        });
        yourArray.Add(new SomeClassName
        {
            Name = "abc3",
            Size = 1233,
            Position = 1233,
            Text = "abc",
            Fun = test_function
        });

        for (int i = 0; i < yourArray.Count; i++)
        {
            //yourArray[i].Fun();
            //Debug.Log(yourArray[i].Name + " gggggggggg ");
        }

        Debug.Log((new Array().yourArray).Count);
        
        //yourArray.RemoveAt(0);  // Removes the element at index 5. 
	}
	

}

А если так
Код:
        for (int i = 0; i < yourArray.Count; i++)
        {Debug.Log(yourArray[i].Name + " gggggggggg ");
        }
то все есть(((

помогите решить проблему!

Последний раз редактировалось accncc; 20.05.2015 в 12:49.
accncc вне форума Ответить с цитированием
Старый 20.05.2015, 12:53   #16
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Поизучайте основы C# и ООП. Вы новый объект создаете, у него конечно 0.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.05.2015, 13:07   #17
accncc
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 20
По умолчанию

займусь основами C# и ООП
может сейчас подсказать как получит старый объект?))
accncc вне форума Ответить с цитированием
Старый 20.05.2015, 13:25   #18
accncc
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 20
По умолчанию

и где я тут создаю новый объект?
(new Array().yourArray)
обратился к классу и объекту yourArray в нем
Count
получаю количество

где тут создание нового объекта?
accncc вне форума Ответить с цитированием
Старый 20.05.2015, 13:35   #19
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

new Array() — тут

Класс != объект != свойство.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 20.05.2015, 13:45   #20
accncc
Пользователь
 
Регистрация: 20.05.2015
Сообщений: 20
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
new Array() — тут

Класс != объект != свойство.


так это обращение к классу! не создание нового массива
Array имя класса!
вот пример
вызываем класс Array и функцию sss в нем
new Array().sss()

может вы путаете с javascript?
accncc вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вызвать функцию при закрытии окна(окно чужое") karaulov Общие вопросы C/C++ 3 21.03.2013 15:30
Как вызвать функцию.. Аделинкка Общие вопросы Delphi 10 21.12.2012 10:47
Не получается вызвать функцию! Ce4kok Общие вопросы Delphi 5 25.05.2011 22:27
Convert error при переборе Horus92 Помощь студентам 1 17.08.2010 22:07
Проблема при переборе списка Spice Общие вопросы C/C++ 3 22.07.2009 08:22