C# 函数检查空字符串属性?

C# 函数检查空字符串属性?,c#,properties,null-coalescing,C#,Properties,Null Coalescing,我有一个具有string属性的对象,例如,一个具有重量和高度的患者对象 但是当属性为null时,我的代码在尝试使用它时失败,因为属性设置为null。我正在尝试创建一个函数来检查字符串/属性是否为null,如果为null,请将属性设置为” 我知道我可以做到这一点: if(string.isNullOrEmpty(patient.weight)) patient.weight = ""; 但是我需要代码尽可能干净,并且我有很多属性,所以我不想手动检查每一个属性。理想情况下,我希望有一个可以接受字符

我有一个具有
string
属性的对象,例如,一个具有重量和高度的患者对象

但是当属性为null时,我的代码在尝试使用它时失败,因为属性设置为null。我正在尝试创建一个函数来检查字符串/属性是否为null,如果为null,请将属性设置为

我知道我可以做到这一点:

if(string.isNullOrEmpty(patient.weight)) patient.weight = "";
但是我需要代码尽可能干净,并且我有很多属性,所以我不想手动检查每一个属性。理想情况下,我希望有一个可以接受字符串的函数(即使它为null也不会失败),如果它不为null,只返回值,如果它为null,则返回一个

string a = null;
a = a ?? "womble";
// a now has the value "womble"

string b = "fluff";
b = b ?? "cabbage";
// b wasn't null, so it still has the value "fluff"
有人能给我一个线索吗?

听起来好像是你的朋友在这里:

string text = patient.Name ?? "";
您可以编写一个扩展方法来做同样的事情,但我认为操作符最终可能更具可读性

请注意,这不会设置属性,但这不是您在以下句子中所说的您想要的:

理想情况下,我希望有一个可以接受字符串的函数(即使它为null也不会失败),并且只返回值(如果它不是null),或者如果它为null则返回一个“”

string a = null;
a = a ?? "womble";
// a now has the value "womble"

string b = "fluff";
b = b ?? "cabbage";
// b wasn't null, so it still has the value "fluff"
这正是上面的代码所做的。

听起来像是你的朋友:

string text = patient.Name ?? "";
您可以编写一个扩展方法来做同样的事情,但我认为操作符最终可能更具可读性

请注意,这不会设置属性,但这不是您在以下句子中所说的您想要的:

理想情况下,我希望有一个可以接受字符串的函数(即使它为null也不会失败),并且只返回值(如果它不是null),或者如果它为null则返回一个“”

string a = null;
a = a ?? "womble";
// a now has the value "womble"

string b = "fluff";
b = b ?? "cabbage";
// b wasn't null, so it still has the value "fluff"
这正是上面的代码所做的。

类似的事情

public string EmptyIfNull(string value) 
{
    return value ?? String.Empty;
}
像这样的

public string EmptyIfNull(string value) 
{
    return value ?? String.Empty;
}

使用空合并运算符:

string s = Patient.Name ?? string.Empty;

因此,如果
Patient.Name
为空,则
s
将设置为空字符串。

使用空合并运算符:

string s = Patient.Name ?? string.Empty;

因此,如果
Patient.Name
为空,那么
s
将被设置为空字符串。

您可以执行
myString??string.Empty
,它为您提供字符串,如果为空,则为string.Empty。

您可以执行
myString??string.Empty
,它为您提供字符串,如果为null,则为string.Empty。

向…问好。

向…问好。

就我个人而言,我将通过这样编写属性来确保这些属性永远不能为null:

private string _Name = string.Empty;
public string Name
{
    get
    {
        return _Name;
    }
    set
    {
        _Name = value ?? string.Empty;
    }
}
string a = null;
a = a ?? "womble";
// a now has the value "womble"

string b = "fluff";
b = b ?? "cabbage";
// b wasn't null, so it still has the value "fluff"
private String m_name = null;
public String Name
{
    get { return m_name ?? String.Empty; }
    set { m_name = value; }
}
但是,您要查找的可能是
运算符,也称为,如上所述,基本上是以下表达式:

x = y ?? z;
表示与此相同:

if (y != null)
    x = y;
else
    x = z;
这也不完全正确。在上面的示例中,对
y
求值两次,而
运算符不会出现这种情况,因此更好的近似值是:

var temp = y;
if (temp != null)
    x = temp;
else
    x = z;

就我个人而言,我会这样写,以确保这些属性永远不会为空:

private string _Name = string.Empty;
public string Name
{
    get
    {
        return _Name;
    }
    set
    {
        _Name = value ?? string.Empty;
    }
}
private String m_name = null;
public String Name
{
    get { return m_name ?? String.Empty; }
    set { m_name = value; }
}
但是,您要查找的可能是
运算符,也称为,如上所述,基本上是以下表达式:

x = y ?? z;
表示与此相同:

if (y != null)
    x = y;
else
    x = z;
这也不完全正确。在上面的示例中,对
y
求值两次,而
运算符不会出现这种情况,因此更好的近似值是:

var temp = y;
if (temp != null)
    x = temp;
else
    x = z;
当任何对象为空时,可以使用返回您选择的默认值

string a = null;
a = a ?? "womble";
// a now has the value "womble"

string b = "fluff";
b = b ?? "cabbage";
// b wasn't null, so it still has the value "fluff"
当任何对象为空时,可以使用返回您选择的默认值

string a = null;
a = a ?? "womble";
// a now has the value "womble"

string b = "fluff";
b = b ?? "cabbage";
// b wasn't null, so it still has the value "fluff"

如果WeightHeight是整数,则它们不能为空。如果您的对象为null,并且您试图获取空对象的高度重量,那么您的代码就是错误的。如果字符串为空,则它将打印空字符

以下是非常优雅的:

if ( String.isNullOrEmpty(patient.weight) )
{
//DO STUFF HERE
}
else
{
//DO OTHER STUFF HERE
}
请理解,如果patient为空,您甚至不应该出现在这段代码中

如果您使用的是isNullOrEmpty,那么执行以下操作是毫无意义的

patient.weight = "";
作者说明


我想我不明白字符串为null会导致问题的原因。初始化时将值设置为空字符串的要点当然是有效的。

如果WeightHeight是整数,则它们不能为空。如果您的对象为null,并且您试图获取空对象的高度重量,那么您的代码就是错误的。如果字符串为空,则它将打印空字符

以下是非常优雅的:

if ( String.isNullOrEmpty(patient.weight) )
{
//DO STUFF HERE
}
else
{
//DO OTHER STUFF HERE
}
请理解,如果patient为空,您甚至不应该出现在这段代码中

如果您使用的是isNullOrEmpty,那么执行以下操作是毫无意义的

patient.weight = "";
作者说明


我想我不明白字符串为null会导致问题的原因。初始化时将值设置为空字符串的要点当然是有效的。

我不确定您所要求的是最适合您的解决方案。如果每次您不想检查
字符串
并在
为空时返回
,我建议您将
字符串
字段初始化为

而不是

private String height;

顺便说一下,您应该将
高度
重量
等值存储为
双精度
,而不是
字符串
,除非您有充分的理由不这样做。

我不确定您所要求的是最适合您的解决方案。如果每次您不想检查
字符串
并在
为空时返回
,我建议您将
字符串
字段初始化为

而不是

private String height;
顺便说一下,您应该将
height
weight
等值存储为
Double
而不是
String