提问人:Amit Dhanuka 提问时间:9/11/2018 更新时间:9/11/2018 访问量:65
直接将 C# 值赋值到对象引用
C# value assignment to object reference directly
问:
Person p = "Any Text Value";
人是一个类。
这在 C# 中是否可能。
我的回答是否定的,但根据面试官的说法,这是可能的。他也没有给我任何线索。
答:
3赞
Matthew Watson
9/11/2018
#1
这可以通过如下方式完成:implicit
using System;
namespace Demo
{
public sealed class Person
{
public Person(string name)
{
Name = name;
}
public static implicit operator Person(string name)
{
return new Person(name);
}
public string Name { get; }
}
static class Program
{
static void Main()
{
Person person = "Fred";
Console.WriteLine(person.Name);
}
}
}
但是,显式转换是首选 - 通常应该只对诸如发明新的数值类型(如 Complex
)之类的事情使用隐式
转换。
4赞
Kirk Larkin
9/11/2018
#2
您可以使用隐式转换来实现此目的。可以说,这将是对隐式转换的滥用,因为在这种情况下应该代表什么并不明显。下面是使示例成功的代码示例:"Any Text Value"
public class Person
{
public string Name { get; set; }
public static implicit operator Person(string name) =>
new Person { Name = name };
}
下面是一个 .NET Fiddle 示例。
评论