Почему лучше использовать функции стихов свойств только для чтения? [закрытый]

Обратите внимание, что ваш отдельный запрос относится к выбранным переменным, например
. Данные 1 (QueryExecutionId = 169237 и typename = test 1)
& ensp; & ensp; & ensp; Данные 2 (QueryExecutionId = 169237 и typename = test 2)
Вышеуказанные 2 данные считаются различными

Попробуйте разделить на и выберите [seq] = 1 (приведенный ниже код разделен на их дата)

SELECT *
    into #Send
    FROM
    (
           SELECT *,ROW_NUMBER() OVER (PARTITION BY [QueryExecutionid] ORDER BY [Date] DESC) [Seq]  
           FROM
           (
                  SELECT    qe.QueryExecutionid AS QueryExecutionId,
                            wfi.FlowId,
                            qe.publishing_date AS [Date], --should not have any null values
                            qe.[customer_idhash]
                            c.typename AS [Type],
                            c.name As Name

                  FROM [QueryExecutions] qe  
                  JOIN [Campaign] c 
                  ON qe.target_campaign_id = c.campaignid
                  LEFT JOIN [WorkflowInstanceCampaignActivities] wfica 
                  ON wfica.queryexecutionresultid = qe.executionresultid
                  LEFT JOIN 
                    (
                        SELECT DISTINCT workflowinstanceid, FIRST_VALUE(workflowdefinitionid) OVER(PARTITION BY workflowinstanceid ORDER BY lastexecutiontime DESC) As FlowId
                        FROM [WorkflowInstances]
                    ) wfi ON wfica.workflowinstanceid = wfi.workflowinstanceid

           ) a
           WHERE [customer_idhash] IS NOT NULL
    ) b
    WHERE [Seq] = 1 
    ORDER BY [QueryExecutionid]
19
задан DrFloyd5 31 October 2008 в 21:10
поделиться

7 ответов

Я недавно прочитал интересную статью в Журнале Visual Studio, который обсудил различное между Методами и Свойствами.

Свойства, как предполагается, возвращают значение и то же значение каждый раз, если что-то еще не называют промежуточным.

Метод А, с другой стороны, как обычно ожидают, сделает что-то в фоновом режиме для получения значения, или что метод может изменить значение каждый раз, когда это называют, как GetNextId () или что-то.

DateTime. Теперь хороший пример Свойства, которое должно было быть Методом, так как это возвращает другое значение каждый раз, когда это используется.

Для заинтересованных - вот статья

, Выбирают Between Methods и Properties

15
ответ дан 30 November 2019 в 04:08
поделиться

Это - просто вопрос появления. Методы подразумевают выполнение так действия, в то время как свойства подразумевают получение некоторых данных.

9
ответ дан 30 November 2019 в 04:08
поделиться

В моем понимании Вы не можете связать с данными к методам; только свойства. Таким образом свойства несут то дополнительное преимущество.

2
ответ дан 30 November 2019 в 04:08
поделиться

Помимо семантики, упомянутой James (оператор намерения), свойства играют специальную роль, так как их значение отображено отладчиком и может использоваться в визуальных разработчиках.

Как следствие, удостоверьтесь, что значения свойств не изменяются без некоторого внешнего действия, потому что иначе, отладчик завинтит Вашу программу.

1
ответ дан 30 November 2019 в 04:08
поделиться

При базировании на Руководство по проектированию Платформы необходимо использовать метод только, когда Вы на самом деле выполняете действие или получаете доступ к ресурсам, которые могли быть дорогими для использования (база данных, сеть).

свойство производит пользователю впечатление, что значения хранятся в памяти и что чтение свойства быстро, в то время как вызов метода мог бы иметь дальнейшую импликацию, чем просто, "получают значение".

Brad Abrams на самом деле записал статья об этом и даже отправляется на MSDN здесь .

я высоко предложил бы, чтобы Вы купили книжное Руководство по проектированию Платформы . Это - необходимость чтение для каждого разработчика.

2
ответ дан 30 November 2019 в 04:08
поделиться

Насколько я знаю, все это компилирует в то же самое. Свойство в IL для.NET является действительно просто getPropertyName и функцией setPropertyName для свойства под названием PropertyName.

Так действительно вопрос стиля в том отношении. Это просто читает лучше для наблюдения следующего:

person.Address.Street;

, а не

person.Address().Street();

Так, в некотором смысле, действительно вопрос эстетики кода.

К сожалению для меня в .NET C#, не так изящно, как Ruby в том () является всегда дополнительным.

1
ответ дан 30 November 2019 в 04:08
поделиться

Мое представление - это при рассмотрении слов - "свойство" по сравнению с "методом". Слово "свойство" подразумевает, что "это - некоторое значение, свойственное от объекта, как цвет, размер, владелец... вызов свойства подразумевал бы относительно простую операцию для возвращения того значения. Или, если это не свойство только для чтения, устанавливание свойства, должно также быть относительно простое (и низкая стоимость) операция.

, С другой стороны, "метод" подразумевает, что "Я должен сделать некоторую реальную работу для выполнения этой задачи, которую Вы спрашиваете меня" - в то время как метод может возвратить значение (даже если только сказать "да, Я сделал это"), это делает целый набор материала для получения того значения для меня - и при этом, это сделает некоторые другие операции, связанные с получением того значения.

Так, это является главным образом семантическим - свойство только для чтения могло так же удовлетворительно быть реализовано как метод - но я посмотрю на то, что вовлечено в возвращение того значения и последствий, которые каждый отправил бы человеку, получающему то свойство или называющему тот метод.

0
ответ дан 30 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: