Присвоить значение непосредственно переменной класса

Я не знаю, так ли это легко, никто этого не ищет, но ничего не нашел...

Я хочу сделать следующее:

public class foo
{
    string X 
    {
        get; 
        set
        { 
            //set and do some other stuff 
        }
    }

    //some other functions
}

Main:

private foo = new foo();

foo = "bla";

Как я могу присвоить этому bla DIRECTLY переменной класса foo без использования foo.X = "bla"?

Как это делают типы данных, например строка? Как они сделаны? Потому что я могу сделать string y; y = "abc"?

Ответ 1

Вы ищете неявный оператор?

public class foo {
  string X {
    get;
    set;
  }

  public static implicit operator foo(string value) {
    return new foo() {
      X = value
    };
  }
}

Обратите внимание, что здесь нет вызова конструктора который будет вызван (и таким образом создать новый экземпляр foo) неявно:

private foo myFoo = "bla";

Ответ 2

Я думаю, вы имели в виду:

private foo = new foo();
foo.X = "bla";

Не? Итак, это будет:

private foo = new foo() {
    X = "bla"
};

И X должен быть общедоступным. Я правильно понял вас?