Преобразовать объект в списке в строку - PullRequest
0 голосов
/ 29 марта 2019

Я хочу изменить свое первое свойство в списке, например, на 5, на строку вроде этой: "" -> (это просто пробел). Я хочу, чтобы эта конкретная запись в списке была пустой ...

Приведенный ниже код вызывает ошибку:

"Неявное преобразование из типа" string "в" double "не является возможно "

Мой код:

var mylist = new List<myclass>();
// ...
var obj = mylist.FirstOrDefault(x => x.myproperty == this.myproperty);
if (obj != null) obj.myproperty = " ";

Мой класс

class myclass
{
    public int laufzeit { get; set; }

    public double myproperty { get; set; }

    public double darlehensbetrag { get; set; }      
}

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Вы не можете хранить пробел в числовом поле, но вы можете сделать свой класс достаточно умным, чтобы иногда отображать число, а иногда и пробел.

class myclass
{
    public bool ShowSpace { get; set; }

    public double myproperty { get; set; }

    public override ToString()
    {
        return this.ShowSpace ? " " : this.myproperty.ToString();
    }
}
0 голосов
/ 29 марта 2019

Как говорится в сообщении об ошибке, вы не хотите присваивать string значение " " свойству double.Это невозможно, так как string никогда не будет double.string может использоваться для отображения a double, но все равно это string, который просто выглядит как double.

Однако такую ​​строку можно преобразовать в двойную:

string numberString = "5.7";
double number = double.Parse(numberString);

Обратите внимание, что приведенный выше фрагмент кода вызовет исключение, если numberString не может быть преобразовано в двойное число, напримеркогда строка " ".

Вы пытаетесь изменить Type свойства во время выполнения.Это невозможно, поскольку c # является строго типизированным языком.У вас не может быть класса, который выглядит как

class Foo
{
    double Bar {get; set;}
}

, а затем волшебным образом преобразуется во время выполнения в

class Foo
{
    string Bar {get; set;}
}

. Вы можете обойти это, используя object или dynamic в качестве типаBar, но я настоятельно рекомендую не сделать это.Поскольку это обходит всю идею использования типов.В таком случае вы никогда не знаете, является ли Bar a double или string.

Я не очень понимаю, почему вы этого хотите, но, на мой взгляд, это выглядит плохим дизайном и, возможно, подойдет другое решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...