2016-11-01 2 views
0

Я неопытный с C#, и я хотел бы спросить, есть ли способ доступа к нестатическим полям без создания объекта?Доступ к нестационарным полям без создания объекта

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

Я был бы очень признателен за любые предложения.

+0

Хотя это не совсем то, что вы хотите, у вас могут быть два конструктора, которые перегружены, - а затем, когда вам нужны исходные значения, вызовите второй конструктор, который не изменит значения –

+8

Что бы это означало? Поля экземпляра не * существуют * до тех пор, пока не будет объект этого типа. –

+1

Можете ли вы погладить собаку без собаки? :) Ответ на ваш вопрос «конструктор меняет некоторые поля»: это то, как работает программирование. Если программист решил сделать этот класс таким образом, то вам нужно работать с ним. Если это кажется неприемлемым или непроверенным, вы должны сообщить об этом своему разработчику (или себе?) :) –

ответ

1

Это невозможно, поскольку нестатические поля по определению относятся к определенному объекту. Однако есть способ создать объект без вызова его конструкторов - см. this question.

1

Невозможно получить доступ к нестатическим полям без создания объекта.

Единственный способ достичь вашей цели - написать конструктор, который не вносит изменений.

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

+0

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

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