Ramesh Balasubramani Ответов: 2

Могу ли я создать новый объект внутри цикла?


Могу ли я создать новый объект внутри цикла?

Пожалуйста, помогите мне.

Ниже приведен пример кода

Какой из них хорош?

Вариант 1, или 2, или 3 .

Спасибо!!!

Что я уже пробовал:

class A
{
    public void MethodA()
    {

        //--------------
    }
}


class B
{
    A a = new A();
    public void MethodB()
    {
        for (int i = 0; i < 500000; i++)
        {
            a.MethodA();
        }
    }
}


class B
{
    A a;
    public void MethodB()
    {
        for (int i = 0; i < 500000; i++)
        {
            a = new A();
            a.MethodA();
        }
    }
}


class B
{
    
    public void MethodB()
    {
        for (int i = 0; i < 500000; i++)
        {
            A a = new A();
            a.MethodA();
        }
    }
}

CHill60

Меня всегда учили держать декларацию как можно ближе к тому месту где она требуется в первую очередь так и должно быть для меня Скрыть   скопировать код

A a = new A();
внутри петли (последний вариант)... но имейте в виду переменную область видимостиМой плохой - см. Решение 1

2 Ответов

Рейтинг:
8

OriginalGriff

Вы не можете сравнивать их, они выполняют разные работы, поэтому нет "лучшего" или "хорошего".
Первый пример

A a = new A();
public void MethodB()
{
    for (int i = 0; i < 500000; i++)
    {
        a.MethodA();
    }
}
Каждый раз вызывает методу на одном и том же экземпляре класса.
Второй пример
A a;
public void MethodB()
{
    for (int i = 0; i < 500000; i++)
    {
        a = new A();
        a.MethodA();
    }
}
Создает новый экземпляр для каждого времени вокруг цикла и вызывает Metha на этом экземпляре.

Разница тонкая, но если вы думаете о машинах, то в первую очередь вы покупаете автомобиль, и вы ездите на нем на работу каждый день. Во втором случае вы покупаете новую машину каждый день и ездите на ней на работу, а затем выбрасываете ее в конце дня!

В этом нет ничего "лучшего" или "хорошего" - для одних подходов первое правильно, для других-второе.


[no name]

Действительно здорово, спасибо вам !!!

Итак, вы предлагаете первый вариант, верно ?

OriginalGriff

Это зависит от того, что вы хотите сделать!
Если вам нужно 500 000 отдельных экземпляров, то вам нужна вторая версия.
Например, подумайте о библиотеке: каждая книга будет отдельным экземпляром класса Book, с собственным названием, автором, расположением на полке, ISBN и т. д. Чтобы построить библиотеку, вам понадобится 500 000 экземпляров класса Book!

Рейтинг:
18

Richard MacCutchan

Второй и третий варианты создают 500 000 новых объектов класса А. не очень хорошая идея.


CHill60

А - хорошая мысль. Мне этого не хватало

Richard MacCutchan

Но в более сложном (и полезном) классе второй или третий вариант может быть правильным.