如何在不使用new的情况下直接赋值?
本文关键字:情况下 赋值 new | 更新日期: 2023-09-27 18:04:23
我想在c#中做这样的事情:
Foo test = "string";
现在对象应该初始化了。我怎样才能做到呢?我不能让它工作,但我知道这是可能的。
您正在寻找隐式转换操作符
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";