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

C# Problem ze zmianą stanu pola

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

Witam

Mam prosty program TODOList, z jedną klasą o nazwie TodoListElement.

Mam w nim metodę ChangeToDoListElementStatus() służącą do zmiany wartości pola _todoListElementStatus z true na false (i analogicznie do odwróconej sytuacji.) Jednak mimo wywołania metody wartość się nie zmienia. Na chwilę obecną nie mam pojęcia co jest nie tak.

klasa Program

using System;

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

            todoListElement.SetTodoListElement("Write this program!");
            Console.Write("After: ");
            todoListElement.ShowTodoListElementStatus();
            todoListElement.ChangeToDoListElementStatus();
            Console.Write("Before: ");
            todoListElement.ShowTodoListElementStatus();
            todoListElement.ShowTodoListElement();
        }
    }
}

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 string SetTodoListElement(string todoListElementValue)
        {
            _todoListElementValue = todoListElementValue;
            return _todoListElementValue;
        }

        public bool ChangeToDoListElementStatus()
        {
            return !_todoListElementStatus;
        }
    }
}

Z góry dziękuję za pomoc.

komentarz 2 lutego przez TheFunny Gaduła (3,270 p.)
Rozwiązałem problem zamieniając tą metodę na voida o treści _todoListElementStatus = !_todoListElementStatus;

Wszytko działa, jednak dlaczego wcześniej był z tym problem? W czym rzecz?

1 odpowiedź

+1 głos
odpowiedź 2 lutego przez gagyn Gaduła (4,720 p.)
wybrane 3 lutego przez TheFunny
 
Najlepsza

Tak jak już zdążyłeś zauważyć problem:

public bool ChangeToDoListElementStatus()
{
     return !_todoListElementStatus;
}

Ta metoda jedynie zwraca odwrotność zmiennej _todoListElementStatus, ale nie zmienia jej wartości i to właśnie było problemem.

 

Edit: A tak przy okazji, to jaki cel ma ta funkcja, oprócz przypisania wartość?

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

Po co zwracasz tę wartość, która została podana w argumencie?

komentarz 3 lutego przez TheFunny Gaduła (3,270 p.)
Masz rację, nie ma to sensu :D Zamieniłem tą metodę na voida i zostawiłem tylko _todoListElementValue = todoListElementValue;

I oczywiście dziękuję za odpowiedź, jak teraz o tym pomyślę to trochę wolno myślałem pisząc te metody i przkminiając ich działanie :>

Podobne pytania

0 głosów
1 odpowiedź 143 wizyt
pytanie zadane 1 października 2016 w C# i .NET przez jankustosz1 Pasjonat (18,150 p.)
0 głosów
0 odpowiedzi 97 wizyt
pytanie zadane 23 stycznia 2018 w C i C++ przez niezalogowany
0 głosów
3 odpowiedzi 429 wizyt
pytanie zadane 11 sierpnia 2015 w C i C++ przez przeCinek19 Użytkownik (650 p.)
Porady nie od parady
Pytania na temat serwisu SPOJ należy zadawać z odpowiednią kategorią dotyczącą tej strony.SPOJ

62,318 zapytań

108,452 odpowiedzi

226,402 komentarzy

35,113 pasjonatów

Przeglądających: 234
Pasjonatów: 7 Gości: 227

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.

...