• 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,300 p.)
0 głosów
1 odpowiedź 280 wizyt
0 głosów
1 odpowiedź 43 wizyt
Porady nie od parady
Możesz ukryć, zamknąć lub zmodyfikować swoje pytanie, za pomocą przycisków znajdujących się pod nim. Nie krępuj się poprawić pochopnie opublikowanego pytania czy zamknąć go po uzyskaniu satysfakcjonującej odpowiedzi. Umożliwi to zachowanie porządku na forum.Przyciski pytania

62,320 zapytań

108,455 odpowiedzi

226,409 komentarzy

35,127 pasjonatów

Przeglądających: 248
Pasjonatów: 11 Gości: 237

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.

...