在我看来,有一种直接的方法可以准确地了解您的要求,即确保它在语法上是正确的以下内容:
get
{
if (partner == null)
{
return = "";
}
return partner;
}
方法是为类提供隐式转换运算符。由于隐式转换运算符,String.Empty 或 "" 可以自动转换为 Ansprechpartner 类型,那么您用于 getter 的 sysntax 是完全合法的。
但是什么是 隐式转换运算符?您甚至可以看到问题:如何为我的班级提供自定义演员支持?了解更多详情。
但是,我更喜欢直接测试您的课程的代码:用于成功测试它的代码如下:
private Ansprechpartner partner;
public virtual Ansprechpartner Partner
{
get
{
// legal assignment thanks to **public static implicit operator Ansprechpartner(string s)**
return partner ?? String.Empty;
}
set
{
partner = value;
}
}
我们也尝试做相反的事情:由于 公共静态隐式运算符 string(Ansprechpartner a)我们看到可以将 Empty 字符串分配给 Ansprechpartner 实例变量
public void test_method()
{
Ansprechpartner s = String.Empty;
}
在 Ansprechpartner 类中,我们定义了强制转换运算符
class Ansprechpartner
{
public static implicit operator Ansprechpartner(string s) {
// put your conversion logic here
// .. i.e: you can simply pass string s to a Ansprechpartner constructor
Ansprechpartner a = new Ansprechpartner();
return a;
}
public static implicit operator string(Ansprechpartner a)
{
if (a == null)
return "";
else
return a.ToString();
}
public Ansprechpartner()
{
}
public override string ToString()
{
return Value;
}
}
就是这样,如果有什么没有解释的,请发表评论。