直接将值赋给类变量

11

我不知道这是否很容易并且没有人在寻找,但我没有找到任何东西...

我想做以下事情:

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

    //some other functions
}

主要内容:

private foo = new foo();

foo = "bla";

如何直接将bla分配给类变量foo,而不使用foo.X = "bla"

数据类型是如何实现的,例如字符串?它们是如何创建的? 因为我可以执行string y; y = "abc"


你需要重载赋值运算符 =。但是为什么你想这样做呢? - Prajwal
3
字符串可以这样做是因为 "abc" 就是 一个字符串。就像你可以将类型为X的对象赋值给类型为X的变量一样。 - Sami Kuhmonen
@SamiKuhmonen 从未想过,这绝对是有道理的... - Dominik
请注意,这里的“private”完全没有意义。 - poke
2个回答

21

您是否正在寻找隐式转换运算符

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

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

请注意,这里没有构造函数调用,不会隐式地创建一个新的foo实例:
private foo myFoo = "bla";

7
请注意,这将创建一个新的foo实例,并且赋值运算符会完全替换旧的对象。特别地,旧对象没有办法知道它被这样替换了。 - poke

-2

我想你的意思是:

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

不是吗? 那么这将是:

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

而且X需要是公共的。 我理解得对吗?


5
这正是原帖所想表达的。 - Paul Kertscher

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接