Как я могу получить доступ к отступающей переменной автореализованного свойства?

Просто используйте параметр -j, работает на OSX, я не знаю о Linux.

zip -j -r 1.zip /home/username/the_folder

79
задан Jeroen Vannevel 26 August 2014 в 16:24
поделиться

6 ответов

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

, Если Вы хотите получить доступ к члену парламента, не занимающему официального поста, которого используют эти свойства, это обычно по нескольким причинам:

  • Вы должны больше, чем просто, простое получает/устанавливает - в этом случае, необходимо просто избегать использования автоматических свойств для этого участника.
  • Вы хотите избежать хита производительности прохождения через того, чтобы получать или установить и просто использовать участника непосредственно - в этом случае, я был бы удивлен, был ли действительно хит производительности. Простые добираются/элементы множества, очень очень легки встроить, и в моем (по общему признанию ограниченный) тестирование, я не нашел различие между использованием автоматических свойств и доступом к участнику непосредственно.
  • Вы только хотите иметь общедоступный доступ для чтения (т.е. просто 'получать'), и класс пишут в участника непосредственно - в этом случае, можно использовать частный набор в автоматическом свойстве. т.е.

    public class MyClass
    {
        public int Age {get; private set;} 
    }

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

92
ответ дан Zinan Xing 24 November 2019 в 10:14
поделиться

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

не используют автоматические свойства, если у Вас есть какая-либо сложная логика в Вашем классе. Просто пойдите private int _age и нормальные методы get/методы set, как Вы обычно были бы.

IMO, автоматические свойства больше подходят для того, чтобы быстро реализовать холостые объекты или временные капсулы данных как:

public class TempMessage {
    public int FromID { get; set; }
    public int ToID { get; set; }
    public string Message { get; set; }
}

, Где Вам не нужно много логики.

23
ответ дан chakrit 24 November 2019 в 10:14
поделиться

Этот синтаксис обычно называют "сахаром синтаксиса", что означает, что компилятор берет тот синтаксис и переводит его во что-то еще. В Вашем примере компилятор генерировал бы код, который выглядит примерно так:

[CompilerGenerated]
private int <Age>k_BackingField;

public int Age
{
   [CompilerGenerated]
   get
   {
      return this.<Age>k_BackingField;
   }
   [CompilerGenerated]
   set
   {
      this.<Age>k_BackingField = value;
   }

Даже знание, всех из которых, Вы могли , вероятно , получает доступ к отступающему полю непосредственно, но таким поражениям цель использовать автоматические свойства. Я говорю, вероятно, здесь, потому что Вы тогда зависите от детали реализации, которая могла измениться в любой точке в будущем релизе компилятора C#.

12
ответ дан Scott Dorman 24 November 2019 в 10:14
поделиться

Негласно то, что происходит, является инжекцией переменной члена парламента, не занимающего официального поста, снабженной префиксом <> k __ AutomaticallyGeneratedPropertyField#

От C# 3.0 Автоматические Свойства объяснили

, Хотя может быть возможно использовать того члена парламента, не занимающего официального поста непосредственно, это очень hacky и ненужное.

10
ответ дан macbirdie 24 November 2019 в 10:14
поделиться

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

7
ответ дан Wedge 24 November 2019 в 10:14
поделиться

Вы не можете, это быть функцией языка в противоположность функции IDE. Чтобы быть честным, я предпочел бы тогда, чтобы IDE включил частную переменную для Вас. Я соглашаюсь, что немного странно для класса внутренне должным быть использовать общедоступную точку входа для доступа к ее собственным переменным. Следовательно я не использую эту новую функцию так очень сам.

2
ответ дан Quibblesome 24 November 2019 в 10:14
поделиться
Другие вопросы по тегам:

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