• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C# - Odwołanie się do objektu tworzonego w innym objekcie

0 głosów
49 wizyt
pytanie zadane 3 lutego w C# i .NET przez TheFunny Gaduła (3,270 p.)
edycja 3 lutego przez TheFunny

Witam

Tak jak w pytaniu. Jak odwołać się do objektu tworzonego w innym objecie?

Piszę prosty program TODOList. Mam w nim klasę TodoListElement odpowiadającą za tworzenie i edycję elementów listy, oraz klasę TodoListNavigation, która wyświetla proste menu, elementy listy, ich status i pozwala na ich edycję (poprzez klasę TodoListElement).

Klasa Program:

using System;
using System.Collections.Generic;

namespace TODOList
{
    internal class Program
    {
        private static void Main()
        {
            var navigationTodoList = new NavigationTodoList();

            navigationTodoList.ShowNavigationBar();
            navigationTodoList.CreateNewElement(new TodoListElement(), "It works, I hope");
            navigationTodoList.EditElementStatus(/*jak odwołać się do objektu stworzonego przez objekt navigationTodoList (ten wyżej)*/);
            navigationTodoList.ShowTodoElementList();
        }
    }
}

Klasa TodoListElement:

using System;

namespace TODOList
{
    public class TodoListElement
    {
        private string _todoListElementValue;
        private bool _todoListElementStatus;

        public TodoListElement()
        {
            _todoListElementValue = "Move this fat ass (づ>‿‿<)づ";
            _todoListElementStatus = true;
        }

        public void ShowTodoListElementStatus()
        {
            Console.WriteLine("TodoListElementStatus: " + _todoListElementStatus);
        }

        public void ShowTodoListElementValue()
        {
            Console.WriteLine("TodoListElementValue: " + _todoListElementValue);
        }

        public void ShowTodoListElement()
        {
            var status = _todoListElementStatus ? "(during)" : "(finished)";
            Console.WriteLine(_todoListElementValue + " " + status);
        }

        public void SetTodoListElement(string todoListElementValue)
        {
            _todoListElementValue = todoListElementValue;
        }

        public void ChangeToDoListElementStatus()
        {
            _todoListElementStatus = !_todoListElementStatus;
        }
    }
}

Klasa TodoListNavigation:
 

using System;
using System.Collections.Generic;

namespace TODOList
{
    public class NavigationTodoList
    {
        private List<TodoListElement> _todoListElementList = new List<TodoListElement>();

        public void ShowNavigationBar()
        {
            Console.WriteLine("--------------------TODO--------------------");
            Console.WriteLine("1.New 2.Edit 3.Change status 4.Delete 5.Exit\n");
        }

        public void ShowTodoElementList()
        {
            foreach (var element in _todoListElementList)
            {
                element?.ShowTodoListElement();
            }
        }

        public void CreateNewElement(TodoListElement todoListElement, string todoListElementValue)
        {
            _todoListElementList.Add(todoListElement);
            todoListElement.SetTodoListElement(todoListElementValue);
        }

        public void EditElement(TodoListElement todoListElement, string todoListElementValue)
        {
            todoListElement.SetTodoListElement(todoListElementValue);
        }

        public void EditElementStatus(TodoListElement todoListElement)
        {
            todoListElement.ChangeToDoListElementStatus();
        }

        public void DeleteElement(TodoListElement todoListElement)
        {
            _todoListElementList.Remove(todoListElement);
            todoListElement = null;
        }

        public void ExitProgram()
        {
            Environment.Exit(0);
        }
    }
}

Jeżeli coś jest niezrozumiałe proszę pisać

1 odpowiedź

+1 głos
odpowiedź 3 lutego przez Snejki Stary wyjadacz (12,080 p.)
wybrane 3 lutego przez TheFunny
 
Najlepsza

utwórz normalną instancję obiektu np.

var element = new TodoListElement()

a następnie podawaj ją jako parametry metod. 

 

komentarz 3 lutego przez TheFunny Gaduła (3,270 p.)
Też tak przekminiłem przed momentem, ale czy to oznacza, że innej opcji nie ma? Nie da się odwołać do obiektu w innym obiekcie?

No i plus oczywiście się należy, dziękuję za szybką odpowiedź :)
komentarz 3 lutego przez Snejki Stary wyjadacz (12,080 p.)
utworzony obiekt w metodzie jak twoja, jest obiektem anonimowym i raczej nie da się do niego odwołać
komentarz 3 lutego przez TheFunny Gaduła (3,270 p.)
Ok, dzięki wielkie

Podobne pytania

0 głosów
1 odpowiedź 109 wizyt
pytanie zadane 14 listopada 2017 w Android, Swift, Symbian przez Kubs Gaduła (3,280 p.)
0 głosów
1 odpowiedź 280 wizyt
0 głosów
1 odpowiedź 43 wizyt
Porady nie od parady
Zadając pytanie postaraj się o odpowiedni tytuł, kategorię oraz tagi.Tagi

62,291 zapytań

108,414 odpowiedzi

226,329 komentarzy

34,965 pasjonatów

Przeglądających: 243
Pasjonatów: 12 Gości: 231

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...