C#直接赋值给对象引用
C# value assignment to object reference directly
Person p = "Any Text Value";
人是class。
这在 C# 中是否可行。
我回答没有,但据面试官说这是可能的。他也没有给我任何线索。
这可以使用 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
.
您可以使用 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 示例。
Person p = "Any Text Value";
人是class。
这在 C# 中是否可行。
我回答没有,但据面试官说这是可能的。他也没有给我任何线索。
这可以使用 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
.
您可以使用 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 示例。