Jeśli mam kod jak poniżej:Deklarowanie zmiennych tak późno, jak to możliwe, a przechodząc metodę powracającego jako parametr
string s = MyClass.GetString(); // Returns string containing "hello world";
ProcessString(s);
Czy to wolniej niż?
ProcessString(MyClass.GetString());
Jeśli tak, dlaczego? W drugim przykładzie kompilator generalnie tworzy zmienną z GetString(); metoda, która zwraca ciąg znaków?
Jaka jest korzyść z deklarowania zmiennych tak późno, jak to możliwe? Czy to wpływa na GC? Jeśli tak, to w jaki sposób (zakładam, że chodzi o geny GC)?
Dzięki
Dzięki. Tak więc dla dwóch przykładów kodu, są one prawie takie same pod maską. W pełni rozumiem twoją odpowiedź na moje drugie zapytanie. :) – dotnetdev
Jeśli zadeklarujesz zmienne u góry bloku, a następnie przypiszesz je później, niepotrzebnie wywołasz ich domyślny konstruktor. Prawdopodobnie w większości przypadków nie jest to wielka sprawa. –
George V. Reilly powiedział: "Jeśli zadeklarujesz zmienne u góry bloku, a następnie przypiszesz je później, niepotrzebnie wywołasz ich domyślny konstruktor", ale jest to prawdą tylko w C++. Pytanie zostało oznaczone jako C# i w tym przypadku nie jest wywoływany żaden konstruktor. Odwołanie ma po prostu wartość zerową. – alexk7