将C#值直接分配给对象引用

时间:2018-09-11 12:40:59

标签: c# .net assignment-operator

Person p = "Any Text Value";

人是一堂课。

在C#中这是否有可能。

我的回答是“否”,但是根据面试官的说法,这是可能的。他也没有给我任何线索。

2 个答案:

答案 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