C# 替换/更改C中的空白或空字符串值
在我的程序的构造函数的属性/访问器方法中有类似的内容C# 替换/更改C中的空白或空字符串值,c#,accessor,C#,Accessor,在我的程序的构造函数的属性/访问器方法中有类似的内容 using System; namespace BusinessTrips { public class Expense { private string paymentMethod; public Expense() { } public Expense(string pmtMthd) {
using System;
namespace BusinessTrips
{
public class Expense
{
private string paymentMethod;
public Expense()
{
}
public Expense(string pmtMthd)
{
paymentMethod = pmtMthd;
}
//This is where things get problematic
public string PaymentMethod
{
get
{
return paymentMethod;
}
set
{
if (string.IsNullOrWhiteSpace(" "))
paymentMethod = "~~unspecified~~";
else paymentMethod = value;
}
}
}
}
当输入PaymentMethod的一个新属性(为null或空格)时,这显然不起作用。有什么想法吗?您是否只需要将string.IsNullOrWhiteSpace替换为string.IsNullOrWhiteSpacevalue 根据您发布的代码,您需要拨打:
this.PaymentMethod = pmtMthd;
而不是
paymentMethod = pmtMthd;
大写字母p将直接使用您的属性而不是字符串。这就是为什么使用它是一个好主意。当访问类变量时。在这种情况下,这是资本,而不是这个。这就不同了,但我已经养成了使用它的习惯。您是否只需要将string.IsNullOrWhiteSpace替换为string.IsNullOrWhiteSpacevalue 根据您发布的代码,您需要拨打:
this.PaymentMethod = pmtMthd;
而不是
paymentMethod = pmtMthd;
大写字母p将直接使用您的属性而不是字符串。这就是为什么使用它是一个好主意。当访问类变量时。在这种情况下,这是资本,而不是这个。这就不同了,但我已经养成了使用这个的习惯。让·巴纳德·佩林的答案是正确的 但这里是完整的代码,我在LinqPad中测试了它,以证明它是有效的
public class Foo {
private string _paymentMethod = "~~unspecified~~";
public string PaymentMethod
{
get
{
return _paymentMethod;
}
set
{
if (string.IsNullOrWhiteSpace(value))
_paymentMethod = "~~unspecified~~";
else _paymentMethod = value;
}
}
}
主要包括:
void Main()
{
var f = new Foo();
f.PaymentMethod = "";
Console.WriteLine(f.PaymentMethod);
f.PaymentMethod = " ";
Console.WriteLine(f.PaymentMethod);
f.PaymentMethod = "FooBar";
Console.WriteLine(f.PaymentMethod);
}
控制台的输出:
~~unspecified~~
~~unspecified~~
FooBar
Jean Barnard Pellerin的答案是正确的 但这里是完整的代码,我在LinqPad中测试了它,以证明它是有效的
public class Foo {
private string _paymentMethod = "~~unspecified~~";
public string PaymentMethod
{
get
{
return _paymentMethod;
}
set
{
if (string.IsNullOrWhiteSpace(value))
_paymentMethod = "~~unspecified~~";
else _paymentMethod = value;
}
}
}
主要包括:
void Main()
{
var f = new Foo();
f.PaymentMethod = "";
Console.WriteLine(f.PaymentMethod);
f.PaymentMethod = " ";
Console.WriteLine(f.PaymentMethod);
f.PaymentMethod = "FooBar";
Console.WriteLine(f.PaymentMethod);
}
控制台的输出:
~~unspecified~~
~~unspecified~~
FooBar
@user1200789:我们需要看到更多的代码。这里没有足够的信息告诉我们问题是什么。你怎么知道它不起作用了?您是使用调试器检查值,还是将其写入控制台…?通过控制台运行调试器,我已经添加了所有内容。@user1200789发现您的问题,更新了我的答案。让我知道它是否有效,如果有效,请接受以下回答:@user1200789对我有效当我将其中一个构造函数中的paymentMethod更改为空白、null或空格stringYour right,我应该调用该属性!不管出于什么原因,它仍然不能工作。@user1200789:我们需要看到更多的代码。这里没有足够的信息告诉我们问题是什么。你怎么知道它不起作用了?您是使用调试器检查值,还是将其写入控制台…?通过控制台运行调试器,我已经添加了所有内容。@user1200789发现您的问题,更新了我的答案。让我知道它是否有效,如果有效,请接受以下回答:@user1200789对我有效当我将其中一个构造函数中的paymentMethod更改为空白、null或空格stringYour right,我应该调用该属性!不管出于什么原因,它仍然不起作用。如果要在构造函数中表示“业务逻辑”,只需重写直接字段值trip=assingment with property setter call trip=如果要在构造函数中表示“业务逻辑”,只需重写直接字段值trip=assingmentwithproperty setter调用trip=