Передача свойства как параметр в C#

ubuntu@ubuntu-VirtualBox:~ амулет $ развертываются - repository=charms local:precise/drupal

Это, кажется, проблема, Вы не должны указывать точный в локальном: бит, попробуйте

juju deploy --repository=charms local:drupal

На Амулете 2.0 и, можно просто указать путь к каталогу очарования. Например:

juju deploy ~/charms/drupal --series trusty

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

Эта страница в документации имеет больше ссылок о том, как развернуться от локального репозитория:

75
задан stakx supports GoFundMonica 28 August 2011 в 12:10
поделиться

2 ответа

Вам нужно будет явно использовать поле и «нормальное» свойство вместо автоматически реализуемого свойства:

public class Bob
{
    private int value;
    public int Value
    { 
        get { return value; } 
        set { this.value = value; }
    }
}

Затем вы можете передать поле как выход параметр:

Int32.TryParse("123", out bob.value);

Но, конечно, это будет работать только в том же классе, поскольку поле является частным (и должно быть!).

Свойства просто не позволяют вам этого делать. Даже в VB, где вы можете передать свойство по ссылке или использовать его в качестве выходного параметра, в основном есть дополнительная временная переменная.

Если вас не заботит возвращаемое значение TryParse , вы всегда можете написать свой собственный вспомогательный метод:

static int ParseOrDefault(string text)
{
    int tmp;
    int.TryParse(text, out tmp);
    return tmp;
}

Затем используйте:

bob.Value = Int32Helper.ParseOrDefault("123");

Таким образом, вы можете использовать одну временную переменную, даже если вам нужно сделать это в нескольких местах.

79
ответ дан 24 November 2019 в 11:43
поделиться

Вы можете добиться этого, но не с помощью свойства.

public class Bob {
    public int Value { get; set; } // This is a property

    public int AnotherValue; // This is a field
}

Вы не можете использовать out на Value , но можете на AnotherValue .

Это будет работать

Int32.TryParse("123", out bob.AnotherValue);

Но в общих рекомендациях вам не рекомендуется делать поле класса общедоступным. Поэтому вам следует использовать подход с использованием временных переменных.

5
ответ дан 24 November 2019 в 11:43
поделиться
Другие вопросы по тегам:

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