Indekser nie zwraca błędu

0

witam
Chciałem się was zapytać czemu w indekserze w secie dokładnie

  if (tabslow[n].Contains(" "))

nie zwraca błędu, gdy przypisane są wyrazy oddzielone spacją ?

namespace ConsoleApplication16
{
    class Program
    {
        static void Main(string[] args)
        {
            Zdanie s = new Zdanie("asdf sdfasdf asdfasdf");
            s[1] = "sdfm sdfs";
            Console.WriteLine(s[1]);
            Console.ReadLine();
        }
    }
}
class Zdanie
{
    string[] tabslow;
    public Zdanie(string zdanie)
    {
        this.tabslow = zdanie.Split();
    }
    public string this[int n]
    {
        get
        {
            if (n > tabslow.Length - 1 || n < 0)
                return "Przekroczono limit elementow tablicy ";

            return tabslow[n];
        }
        set
        {
            if (tabslow[n].Contains(" ")) // Czemu nie wyskakuje błąd jeśli wprowadzony string zawiera spację?
            {
                Console.WriteLine("Nie moze zawierac spacji"); 
            }
            else
                tabslow[n] = value;
        }
         
    }
} 
1

Ponieważ metodą Split dzielisz ten string, który przesłałeś w konstruktorze na tablice stringów(spacja to separator). A w momencie porównania odwołujesz się do s[1] czyli "sdfasdf".
Jeśli chcesz sprawdzić czy wprowadzany string zawiera spacje to możesz to zrobić np. tak:

if (value.Contains(" "))

Edit: Nie jestem pewien czy chodzi Ci o przypisany czy przypisywany string. W każdym razie jeśli to:

Zdanie s = new Zdanie("asdf sdfasdf asdfasdf");
s[1] = "sdfm sdfs";
Console.WriteLine(s[1]);
Console.ReadLine();

Zamienisz na to:

Zdanie s = new Zdanie("asdf sdfasdf asdfasdf");
s[1] = "sdfm sdfs";
s[1] = "asd";
Console.WriteLine(s[1]);
Console.ReadLine();

To wtedy twój warunek zadziała.

1 użytkowników online, w tym zalogowanych: 0, gości: 1