Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 27.06.2018, 14:26   #1
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
Вопрос Есть ли смысл использовать this тут?

Может какой - то профессионал знает, зачем тут this, в учебнике пишут что не смысла использовать, вряд ли создатели C#`а занимаются диатизмом.
Вот код:
Код:

using System;
class Rect {
    public int Width;
    public int Height;

    public Rect(int w, int h)
    {
        this.Width = w;
        this.Height = h;
    }
    public int Area()
    {
        return this.Width * this.Height;
    }
}

class UseRect {
    static void Main()
    {
        Rect r1 = new Rect(4, 5);
        Rect r2 = new Rect(7, 9);

        Console.WriteLine("Площадь прямоугольника r1: " + r1.Area());
        Console.WriteLine("Площадь прямоугольника r2: " + r2.Area());
        Console.ReadKey();
    }
}

Мaкс вне форума   Ответить с цитированием
Старый 27.06.2018, 15:28   #2
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,034
Репутация: 2028

icq: 216409213
По умолчанию

Это стиль кода такой. Явно показывает к чему переменная относится, помогает если имя поля совпадает с параметром функции.

Цитата:
Сообщение от Мaкс Посмотреть сообщение
вряд ли создатели C#`а занимаются диатизмом.
Они боги? Вы просто не видели их другие проекты.
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 27.06.2018, 15:30   #3
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
По умолчанию

Код:

this.Width

работает так же как и
Код:

Width

так что нет смысла тут использовать.

Цитата:
Сообщение от p51x Посмотреть сообщение
Вы просто не видели их другие проекты.
Посмотрю на вики.
Мaкс вне форума   Ответить с цитированием
Старый 27.06.2018, 15:33   #4
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
По умолчанию

На вики тоже самое:
Код:

public Employee(string name, string alias)
{
    // Use this to qualify the fields, name and alias:
    this.name = name;
    this.alias = alias;
}

Может Вы имели в виду ещё 2 предназначения? А я имел в виду в случае, когда нужно квалифицировать элементы, скрытых одинаковыми именами.
Мaкс вне форума   Ответить с цитированием
Старый 27.06.2018, 15:44   #5
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,034
Репутация: 2028

icq: 216409213
По умолчанию

Цитата:
Сообщение от Мaкс Посмотреть сообщение
так что нет смысла тут использовать.
Я где-то сказал другое?

Цитата:
Сообщение от Мaкс Посмотреть сообщение
На вики тоже самое:
На вики как раз пример того, зачем это надо. Попробуйте выполнить:
Код:

public Employee(string name, string alias)
{
    // Use this to qualify the fields, name and alias:
    name = name;
    alias = alias;
}

__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 27.06.2018, 15:48   #6
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
name = name;
alias = alias;
Только что хотел это написать, но не успел... На вторую переменную нужно поставить this, пример:
Код:

name = this.name;
    alias = this.alias;

Мaкс вне форума   Ответить с цитированием
Старый 27.06.2018, 15:48   #7
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
name = name;
alias = alias;
Только что хотел это написать, но не успел... На вторую переменную нужно поставить this, пример:
Код:

name = this.name;
    alias = this.alias;

?
Мaкс вне форума   Ответить с цитированием
Старый 27.06.2018, 15:49   #8
p51x
Профессионал
 
Регистрация: 15.02.2010
Сообщений: 12,034
Репутация: 2028

icq: 216409213
По умолчанию

и поля класса останутся неинициализированными...
__________________
Запомните раз и навсегда: помочь != "решите за меня"!
p51x вне форума   Ответить с цитированием
Старый 27.06.2018, 15:52   #9
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
По умолчанию

Спасибо, p51x, почему то в большинстве случаях только Вы отвечаете, не было бы Вас, не было бы форума!
Мaкс вне форума   Ответить с цитированием
Старый 28.06.2018, 09:59   #10
Мaкс
Форумчанин
 
Аватар для Мaкс
 
Регистрация: 12.06.2018
Адрес: Научная столица России.
Сообщений: 399
Репутация: -5
По умолчанию

Всё же this в этом случае бесполезное ключевое слово: если так сделать:
Код:

base.x = this.x;

переменной name а не параметру name будет присвоено значение переменной name, так что тут использовать бесполезно, если так использовать:
Код:

this.base.x = x;

то тоже не будет вообще ничего работать - программа не скомпилируется! Так вывод: я не нашёл ни одного случая, где есть польза от этого случая со this!
Мaкс вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли смысл менять процессор? JU7SU Железо 4 16.12.2013 13:53
Есть ли в этом смысл? raytek Microsoft Office Access 21 05.04.2013 19:22
есть ли смысл изучать visual user Microsoft Office Excel 5 12.06.2012 10:57
Российская ОС. Есть ли смысл? mrChester Свободное общение 39 30.07.2010 17:25


11:34.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru