Person p = "Any Text Value";
人是一堂课。
在C#中这是否有可能。
我的回答是“否”,但是根据面试官的说法,这是可能的。他也没有给我任何线索。
答案 0 :(得分:4)
您可以使用implicit conversion来实现。可以争辩说,这是隐式转换的滥用,因为在这种情况下"Any Text Value"
到底应该代表什么并不明显。这是使您的示例成功的代码示例:
public class Person
{
public string Name { get; set; }
public static implicit operator Person(string name) =>
new Person { Name = name };
}
这是一个.NET Fiddle示例。
答案 1 :(得分:3)
可以使用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);
}
}
}
但是,首选显式转换-通常应only use implicit
for things like inventing a new numeric type such as Complex
。