Я пытаюсь сделать простое расширение строки, которое назначает изменения исходной строке (например, toUpper). В этом случае метод присваивает содержимое второму аргументу, если он не является ни белым space или null ... в противном случае оно оставляет текущее значение на месте или присваивает пустое значение «". Таким образом, я хотел бы иметь его пойти:Проблема с расширением строки в C#
somerecord.Property1.func(someobj.property);
somerecord.Property2.func(someobj.otherproperty);
somerecord.Property3.func(someobj.anotherproperty);
в то время как мой код выглядит
public static string func(this String str, string replacement)
{
if (!String.IsNullOrWhiteSpace(replacement)) {
str = replacement;
return replacement;
}
else
{
if(str == null)
str = "";
return "";
}
}
Я хотел установить this
к ref
, но я не могу. Любые идеи о том, как реализовать это чисто?
Я вполне уверен, что нет никакого способа сделать это. Вы не можете «отменить это» (т. Е. Вы не можете изменить переменную), и вы не можете изменить экземпляр строки. –
@ThomasD. Методы расширения будут отлично работать с 'null', не уверен, что вы пытаетесь сказать. – InBetween
Thomas D., Если я создаю объект obj, у которого есть неопределенная строка свойства s, то obj.s.func (something) будет показывать строку как null. Майкл Гюнтер, как работают методы, такие как ToLower и ToUpper? – user3856804