Co autor miał na myśli

0

Witam,

Czytam książkę C# 5.0. Programowanie. Tworzenie aplikacji Windows 8, internetowych oraz biurowych w .NET 4.5 Framework
autorstwa Ian Griffiths i nurtuje mnie jedno zdanie. Myślę, że jest tu błąd bo wszędzie w internecie znajduję dane odwrotne na ten temat a mianowicie cytuje:

"Struktury pozwalają używać inicjalizatorów tylko w odniesieniu do zwyczajnych pól składowych( a zatem nie można ich stosować ani w stałych, ani w składowych statycznych).

Z tego co wiem w strukturach nie można inicjować pól składowych ( można to jedynie robić w konstruktorze - i to na dodatek tylko takim który ma co najmniej jeden argument - wtedy należy zainicjować wszystkie pola dostępne w strukturze aby struktura mogła funkcjonować.

Natomiast z tego co wiem pola statyczne oraz stałe można inicjalizować poza konstruktorem.

**W takim razie jaki sens ma te zdanie? Co autor miał na myśli?
**
Wcześniej autor pisze również "Struktury zapewniają nieco mniejsze możliwości, gdyż ich domyślny sposób inicjalizacji zawsze przypisuje składowym wartość 0, dlatego też w ich przypadku wszelkie inicjalizatory należy pomijać" - z tego co wiem jest to nawet zabronione. Chyba że jest to w ciele konstruktora co najmniej jedno argumentowego.

Proszę o wypowiedź osób które są obeznane w temacie.

0

W takim razie jaki sens ma te zdanie? Co autor miał na myśli?

Prawdopodobnie zły dzień tłumacza. Trzeba byłoby zobaczyć to zdanie w oryginale. Nie przykładaj zbyt wielkiej wagi.

0
Azarien napisał(a):

W takim razie jaki sens ma te zdanie? Co autor miał na myśli?

Prawdopodobnie zły dzień tłumacza. Trzeba byłoby zobaczyć to zdanie w oryginale. Nie przykładaj zbyt wielkiej wagi.

Weź teraz dostań takie filozoficzne zagadnienie na rozmowie o pracę. :D

0

Ok dzięki. Denerwują mnie te ciągłe błędy w tłumaczeniach. Już któryś raz utwierdzam się w przekonaniu że lepiej czytać w oryginale.

3

Brzmi jak negacja prawdy:

struct S
{
    private static int a = 1; // ok
    private const int b = 2; // ok
    private int c = 3; // nie ok
}

A w cytacie mamy:

"Struktury pozwalają używać inicjalizatorów tylko w odniesieniu do zwyczajnych pól składowych( a zatem nie można ich stosować ani w stałych, ani w składowych statycznych).

Czyli dokładnie odwrotnie niż jest.

Zły dzień tłumacza albo autor ksiażki zaspał.

0

Własnie też to sprawdzałem i wyszło mi na to samo ;p

2

W oryginale jest dobrze, tłumaczenie jest dość niefortunne:

Structs are slightly more limited, because their default initialization always
involves setting all its instance fields to zero, so you are obliged to omit initializers for
those. Structs do support initializers for non-instance fields though, i.e., const and
static fields.

0

Dzięki wielkie za precyzyjne odpowiedzi :) Ostatnia całkowicie wyczerpuje temat.

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