如何在不使用new的情况下直接赋值?

本文关键字:情况下 赋值 new | 更新日期: 2023-09-27 18:04:23

我想在c#中做这样的事情:

Foo test = "string";

现在对象应该初始化了。我怎样才能做到呢?我不能让它工作,但我知道这是可能的。

如何在不使用new的情况下直接赋值?

您正在寻找隐式转换操作符

public class Foo
{
    public string Bar { get; set; }
    public static implicit operator Foo(string s)
    {
        return new Foo() { Bar = s };
    }
}

那么你可以这样做:

Foo f = "asdf";
Console.WriteLine(f.Bar); // yields => "asdf";

可以隐式地使用强制转换操作符:

sealed class Foo
{
    public string Str
    {
        get;
        private set;
    }
    Foo()
    {
    }
    public static implicit operator Foo(string str)
    {
        return new Foo
        {
            Str = str
        };
    }
}

那么你可以做Foo test = "string";

相关文章: