Loading...
bacuty avatar bacuty 55 Точки

[КПК] Използване на var вместо конкретен тип?

Не знам дали мястото на върпоса е тук, но е породен от първа задача на първото домашно.

Има ли нещо като конвецния за използването на var вместо конкретен тип . Лично аз го ползвам по-скоро "интуитивно" и не много често. Като например в посочената задача на мен лично ми идва в повече :).

Поздрави,

Василена

П.С. :Весели празници :)!

Тагове:
1
C# OOP Advanced
RoYaL avatar RoYaL Trainer 6849 Точки

Случаи, в които не бих избрал "var" са когато искам нещо да е изрично от определен тип или негов наследник, а не негов супертип.

var предразполага към много скрит полиморфизъм (duck typing), който не винаги е желан ефект.

Например ако имам следната структура:

- class Person

- class Student extends Person

- class Teacher extends Person

- class OnlineStudent extends Student

- class OnsiteStudent extends Student

Всички от които имат метод "Breath()".

и редовете:

var teen = new Student();

teen.Breath();

Нищо не ми пречи да заменя дясната част на Teacher(); Само че де факто това, което съм искал да напиша е, че искам в променливата "teen" да се съдържат само студенти. Било то просто студенти, онлайн студенти или присъствени студенти. А де факто съм позволил на хората да сложат всеки един тип, който има метод Breath().

От гледна точка на четимост трябва да става ясно за четящия какво си имал предвид и какво искаш да може да се променя по кода. В случая по горе - съм имал предвид "само студенти", но не става ясно че това имам предвид.

 

 

5
Filkolev avatar Filkolev 4482 Точки

Good point.

Да речем имаш структурата: IPerson, IEnrollable и IStudent : IPerson, IEnrollable.

Ако напишеш var student = new Student() получаваш променлива тип Student. В зависимост от това какво искаш да правиш с тази променлива може отдясно да сложиш нещо по-абстрактно, IPerson, IStudent или IEnrollable. Това може да покаже някаква допълнителна информация на четящия кода каква е функцията на променливата, как смяташ да я използваш (в случая дали се интересуваш от студента като човек, студент или просто искаш в даден момент да му викнеш метода Enroll()).

2
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.