C# 中的字符串扩展问题
Issue with String Extension in C#
我正在尝试做一个简单的字符串扩展,将更改分配给原始字符串(如 toUpper)。在这种情况下,该方法将内容分配给第二个参数,如果它不是白色的话 space 也不是 null...否则,它将保留当前值,或者将空值分配给“”。所以,我想要它:
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
但我不能。关于如何干净地实施它有什么想法吗?
不要使该方法成为扩展方法,实现常规静态方法:
public static void func(ref string str, string replacement)
{
if (!String.IsNullOrWhiteSpace(replacement)) {
str = replacement;
}
else
{
if(str == null)
str = "";
}
}
但是请注意,您的用例仍然不起作用,您不能将 属性 作为 ref
参数传递给开头:
class Foo
{
public string someVariable;
public string SomeProperty { get; }
}
var foo = new Foo();
func(ref foo.someVariable, ""); //ok
func(ref foo.SomeProperty, ""); //compile time error
我正在尝试做一个简单的字符串扩展,将更改分配给原始字符串(如 toUpper)。在这种情况下,该方法将内容分配给第二个参数,如果它不是白色的话 space 也不是 null...否则,它将保留当前值,或者将空值分配给“”。所以,我想要它:
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
但我不能。关于如何干净地实施它有什么想法吗?
不要使该方法成为扩展方法,实现常规静态方法:
public static void func(ref string str, string replacement)
{
if (!String.IsNullOrWhiteSpace(replacement)) {
str = replacement;
}
else
{
if(str == null)
str = "";
}
}
但是请注意,您的用例仍然不起作用,您不能将 属性 作为 ref
参数传递给开头:
class Foo
{
public string someVariable;
public string SomeProperty { get; }
}
var foo = new Foo();
func(ref foo.someVariable, ""); //ok
func(ref foo.SomeProperty, ""); //compile time error