Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2018, 13:26   #1
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
Вопрос Есть ли смысл использовать 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, 14:28   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

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

Цитата:
Сообщение от Мaкс Посмотреть сообщение
вряд ли создатели C#`а занимаются диатизмом.
Они боги? Вы просто не видели их другие проекты.
p51x вне форума Ответить с цитированием
Старый 27.06.2018, 14:30   #3
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Код:
this.Width
работает так же как и
Код:
Width
так что нет смысла тут использовать.

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

На вики тоже самое:
Код:
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, 14:44   #5
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от М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, 14:48   #6
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
name = name;
alias = alias;
Только что хотел это написать, но не успел... На вторую переменную нужно поставить this, пример:
Код:
name = this.name;
    alias = this.alias;
Мaкс вне форума Ответить с цитированием
Старый 27.06.2018, 14:48   #7
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
name = name;
alias = alias;
Только что хотел это написать, но не успел... На вторую переменную нужно поставить this, пример:
Код:
name = this.name;
    alias = this.alias;
?
Мaкс вне форума Ответить с цитированием
Старый 27.06.2018, 14:49   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

и поля класса останутся неинициализированными...
p51x вне форума Ответить с цитированием
Старый 27.06.2018, 14:52   #9
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

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

Всё же this в этом случае бесполезное ключевое слово: если так сделать:
Код:
base.x = this.x;
переменной name а не параметру name будет присвоено значение переменной name, так что тут использовать бесполезно, если так использовать:
Код:
this.base.x = x;
то тоже не будет вообще ничего работать - программа не скомпилируется! Так вывод: я не нашёл ни одного случая, где есть польза от этого случая со this!
Мaкс вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Есть ли смысл менять процессор? 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