Присвоение значения C # объекту непосредственно - PullRequest
0 голосов
/ 11 сентября 2018
Person p = "Any Text Value";

Человек - это класс.

Возможно ли это в любом случае в C #.

Я ответил «нет», но, по словам интервьюера, это возможно. Он также не дал мне никаких подсказок.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Вы можете достичь этого, используя неявное преобразование .Можно утверждать, что это будет злоупотребление неявным преобразованием, учитывая, что не совсем ясно, что именно "Any Text Value" должно представлять в этом случае.Вот пример кода, который сделает ваш пример успешным:

public class Person
{
    public string Name { get; set; }

    public static implicit operator Person(string name) =>
        new Person { Name = name }; 
}

Вот пример .NET Fiddle .

0 голосов
/ 11 сентября 2018

Это можно сделать с помощью 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);
        }
    }
}

Однако явное преобразование предпочтительнее - обычно следует использовать implicit только для таких вещей, как изобретение нового числового типа, такого каккак Complex.

...