Инициализировать переменную string

Как я могу инициализировать пустой string, стоимость которого - "" но в этой линии кода:

Presenter.OnRazonSocialChanged(txtRazonSocial.Text);

Я это решил в строителе Presenter следующего способа:

public ProveedorPresenter(Proveedor model, ProveedorView view)
    {
        _model = model;
        _view = view;


        _model.RazonSocial = "";
        _model.DocumentoIdentidad = "";
        _model.Direccion = "";
        _model.Fijo = "";
        _model.Celular = "";
        _model.Representante = "";
        _model.Email = "";

        _view.Presenter = this;
    }

Debe funcionar así

Не инициализируя переменных как пустота, он дает мне следующую ошибку: Error

Поскольку они будут видеть, я завишу от события TextChanged: каковым было бы решение?

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

Верит в метод в Presenter, который называет Инициализировать модель

public void InicializarNodelo()
    {
        _model.RazonSocial = string.Empty;
        _model.DocumentoIdentidad = string.Empty;
        _model.Direccion = string.Empty;
        _model.Fijo = string.Empty;
        _model.Celular = string.Empty;
        _model.Representante = string.Empty;
        _model.Email = string.Empty;
    }

И я это называю в load моего Вида (формуляре)

private void ProveedorView_Load(object sender, EventArgs e)
    {
        Presenter.InicializarNodelo();
    }

4
задан 04.06.2016, 19:42
4 ответа

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

Как кажется, то, что ты стараешься делать, состоит в том, чтобы распределять пустой string в txtRazonSocial.Text и одновременно перемещать это в метод Presenter.OnRazonSocialChanged(). Ты можешь добиваться этого легко с sgte выражение:

Presenter.OnRazonSocialChanged(txtRazonSocial.Text = "");

или

Presenter.OnRazonSocialChanged(txtRazonSocial.Text = String.Empty);

Однако согласно sgte код другого вопроса.

public class ProveedorPresente
{
    private Proveedor _model;
    private ProveedorView _view;

    ...

    public void OnRazonSocialChanged(string razonSocial)
    {
        _model.RazonSocial = razonSocial;
    }

    ...
}

и Ваше использование здесь

public partial class ProveedorView : Form
{
    public ProveedorPresente Presenter { get; set; }
    public ProveedorView()
    {
        InitializeComponent();
    }

    ...

    private void txtRazonSocial_TextChanged(object sender, EventArgs e)
    {
        Presenter.OnRazonSocialChanged(txtRazonSocial.Text);
    }

    ...
}

Он у меня не остается ясным, потому что ты хочешь переместить пустой string в handler каждый раз, когда изменяется Общественный Разум, цель метода txtRazonSocial_TextChanged он состоит в том, чтобы сообщать ему в Presenter который стоимость контроля изменила, и перемещать его новую стоимость для того, чтобы он был в свою очередь, это смог setear в Model.

В любом случае, если ты хочешь инициализировать контроль, как string ты был бы должен пустоту setear в Proveedor (model) перед тем, как инициализировать контроль со стоимостью model.

2
ответ дан 24.11.2019, 14:14
  • 1
    Привет Карлос Му и # 241; oz, когда я не ввожу данных в компьютер в контроле и выписываю prroveedor он посылает мне info, как null, но если я ничего не посылаю, должна посылать это пустота (" "), raz и # 243; n, что я делаю это доказательство, дело в том, что у меня есть класс Validator, который посылает серию сообщений presentaci и # 243; n, что показывают обязательные поля, которые он должен наполнять, и т.д. – Pedro Ávila 03.06.2016, 15:16
  • 2
    Карлос Му и # 241; oz, есть деталь, если я не ввожу данных в компьютер, не инициализируются переменные, из-за которых я завишу от события textchanged, именно поэтому я получаю null, это моя проблема. – Pedro Ávila 03.06.2016, 15:35
  • 3
    Поэтому ты dec и # 237; в который ты инициализировал модель с полями в " " не формуляр – Carlos Muñoz 03.06.2016, 18:15

Ты можешь использовать null coalescing operator ??

Presenter.OnRazonSocialChanged(txtRazonSocial.Text ?? "");

В случае, если свойство Text будьте null он использует пустую цепь "".

5
ответ дан 24.11.2019, 14:14
  • 1
    Привет Энрике, именно я хочу сделать это, если он состоит null в том, чтобы он послал пустоту " " – Pedro Ávila 03.06.2016, 15:17

Мне кажется, что ты желаешь, состоит в том, чтобы санкционировать контент TextBox:

        if (string.IsNullOrWhiteSpace(txtRazonSocial.Text)) {
            // contenido del TextBox Vacio !
        }else{
Presenter.OnRazonSocialChanged(txtRazonSocial.Text);
        }
2
ответ дан 24.11.2019, 14:14

Сюда идет мой ответ, основываясь на остальных ответах (enrique7mc и Карлос) (я не могу видеть изображение)

Я понимаю, что ты хочешь предотвратить, что string который ты посылаешь из-за параметра в функцию OnRazonSocialChanged(string) будьте null.

Давайте начинаться из-за того, что говорили, что у тебя есть это:

public ProveedorPresenter(Proveedor model, ProveedorView view)
{
    _model = model;
    _view = view;


    _model.RazonSocial = "";
    _model.DocumentoIdentidad = "";
    _model.Direccion = "";
    _model.Fijo = "";
    _model.Celular = "";
    _model.Representante = "";
    _model.Email = "";

    _view.Presenter = this;
}

Где ты распределяешь твой параметр model типа Proveedor во внутреннее поле _model класса ProveedorPresenter и потом ты распределяешь всю стоимость в "" То, что практически не имеет смысл (По крайней мере для меня), состоял бы в том, чтобы создавать самое правильное строитель следующей формы:

public ProveedorPresenter(ProveedorView view, Proveedor model = null)
{
    _model = (model != null) ? model : new Proveedor();
    // ...
}

Где ты распределяешь параметр model со стандартной настройкой null для того, чтобы, если ты это не определяешь в призыве к строителю, он распределил его в поле _model стоимость нового поставщика, так что стоимость будет инициализироваться в "" (Если ты так это определил в пустом строителе Proveedor)

Потом, в твоем методе OnRazonSocialChanged(string) ты это делаешь:

public void OnRazonSocialChanged(string s)
{
    _model.RazonSocial = (string.IsNullOrEmpty(s) || string.IsNullOrWhiteSpace(s)) ? "" : s;
}

И у тебя будет то, в чем ты нуждаешься для того, чтобы он не оставил тебя string как null.

1
ответ дан 24.11.2019, 14:14

Теги

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