Что делает символ перед именем переменной, средним в C#? [дубликат]

Spring AOP framework основан на «прокси» и здесь очень хорошо объясняется: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/aop. html # aop-understanding-aop-proxies

Когда Spring создает компонент, который настроен на аспект (например, «ABC» в вашем примере), он фактически создает объект «прокси», который действует как настоящий боб. Прокси просто делегирует вызовы «реальному» объекту, но, создав это косвенное действие, прокси получает возможность реализовать «совет». Например, ваш совет может регистрировать сообщение для каждого вызова метода. В этой схеме, если метод в реальном объекте («метод1») вызывает другие методы в одном и том же объекте (скажем, метод2), эти вызовы происходят без прокси на картинке, поэтому нет никаких шансов для реализации каких-либо советов.

В вашем примере, когда вызывается метод1 (), прокси получит возможность делать то, что он должен делать, но если метод1 () вызывает метод2 (), на картинке нет никакого аспекта , Как бы то ни было, если метод2 вызывается из какого-либо другого компонента, прокси сможет выполнить совет.

Надеюсь, это поможет.

Спасибо, Рагу

496
задан Community 23 May 2017 в 12:10
поделиться

4 ответа

Символ позволяет Вам использовать зарезервированное слово. Например:

int @class = 15;

вышеупомянутые работы, когда ниже не был бы:

int class = 15;
631
ответ дан Michael Meadows 23 May 2017 в 22:10
поделиться
  • 1
    привет я получил somethihg, но все еще ошибку: mongoimport - набор ping_collaction - файл group_result31.12.2012.json - jsonArray вторник Jan 01 16:04:53 exception:JSONArray файл слишком большой вторник Jan 01 16:04:53, предупреждая: строка журнала предпринята (16384k) свыше макс. размера (10k), печатая начало и конец...... некоторый json... Вторник Jan 01 16:04:53 импортировал 0 вторников объектов Jan 01 16:04:53 ОШИБКИ: встреченный 1 ошибка – user63898 2 January 2013 в 01:06

Символ служит 2 целям в C#:

Во-первых, это позволяет Вам использовать зарезервированное слово в качестве переменной как это:

int @int = 15;

вторая опция позволяет Вам указать строку, не имея необходимость выходить из любых символов. Например, '\' символ является символом ESC так обычно, необходимо было бы сделать это:

var myString = "c:\\myfolder\\myfile.txt"

альтернативно можно сделать это:

var myString = @"c:\myFolder\myfile.txt"
373
ответ дан ww1711 23 May 2017 в 22:10
поделиться
  • 1
    предупреждение не является никакой проблемой, просто говоря Ваш оно сократило строку для хранения файла журнала меньшим. К первой ошибке, поскольку @WPCoder предлагает в другом ответе, есть ли какая-либо запись, которые больше, чем 16 МБ? – Chunliang Lyu 2 January 2013 в 01:21

Это позволяет Вам использовать ключевое слово C# в качестве переменной. Например:

class MyClass
{
   public string name { get; set; }
   public string @class { get; set; }
}
11
ответ дан Joel Coehoorn 23 May 2017 в 22:10
поделиться

Важный момент, который забыли другие ответы, то, что "@keyword" компилируется в "ключевое слово" в CIL.

Поэтому, если у Вас есть платформа, которая была сделана в, скажем, F#, который требует, чтобы Вы определили класс со свойством, названным "классом", можно на самом деле сделать это.

Это не , что полезный на практике, но не наличие это предотвратило бы C# от некоторых форм языка interop.

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

private void Foo(){
   int @this = 2;
}

, но я сильно препятствовал бы этому! Просто найдите другое имя, даже если 'лучшее' название переменной является одним из зарезервированных имен.

58
ответ дан Rasmus Faber 23 May 2017 в 22:10
поделиться
  • 1
    хорошо жаль о begginer вопросах, но что делает mongoDB, посмотрите как запись? общий файл равняется 80 мега – user63898 2 January 2013 в 01:35
Другие вопросы по тегам:

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