2015-11-23 4 views
-1

Там есть постоянная OutputFormatter._outputMaxLength, которые я использую много в этой конкретной области, и сделать мой код более компактным и описательным я хочу сделатьКак создать локальный псевдоним для переменной?

int linelen = OutputFormatter._outputMaxLength; 

кроме Я хочу linelen быть ссылкой на OutputFormatter._outputMaxLength, а не копия его стоимости. I.e., я хочу сделать эквивалент

int * linelenptr = &OutputFormatter._outputMaxLength; 

в C/C++;

Я понимаю, что с linelen это всего лишь int, это не сохраняет память; как я уже сказал, это просто цель компактности и удобочитаемости.

+1

Реализовать зависимое свойство, как, внутр LineLen {получить {вернуться OutputFormatter._outputMaxLength; }} –

+3

Поскольку это константа, зачем вам ссылаться на нее? –

+0

У Дэвида хороший момент. Зачем вам нужна ссылка, если значение постоянное? –

ответ

3

Как предложил @OguzOguz, вам нужно будет использовать Property для этого:

int LineLen { get { return OutputFormatter._outputMaxLength; } } 

Everytime вы используете LineLen, то get будет называться, чтобы получить последнее значение.

+0

И при компиляции свойство будет выглядеть (если декомпилировано) int LineLen {get {return 1024; }}, поскольку константа будет встроена в компилятор. :) LOL –

+0

Действительно, это также уменьшило необходимость «свойства пересылки», если значение никогда не изменяется. – RvdK

3

Как насчет быстрой лямбды:

Func<int> LineLen =() => OutputFormatter._outputMaxLength; 
+0

В чем преимущество этого предложения над предложением недвижимости? Потому что это просто Линк? Пожалуйста, просветите меня .. (я имею в виду. Если есть преимущество, я должен знать) –

+0

@OguzOzgul Он может использоваться локально, короче и яснее. –

+1

@BinkanSalaryman, это только короче, если синтаксис C# 6 не используется для свойства. Если это так, свойство становится 'int LineLen => OutputFormatter._outputMaxLength;', что даже меньше, чем –

Смежные вопросы