Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将属性从类别A复制到类别B_C#_.net - Fatal编程技术网

C# 将属性从类别A复制到类别B

C# 将属性从类别A复制到类别B,c#,.net,C#,.net,使用C#,是否有方法将已设置的类a的属性(因此,如果我没有在类a中设置某些属性,我不希望这些属性被复制)复制到类B 例如: class A {public string Name {get;set;} public string Age {get;set;} } class B {public string Name {get;set;} public string Age {get;set;} } A a = new A(){name ="bob"} 现在我有了bb=newb(){Ag

使用C#,是否有方法将已设置的类a的属性(因此,如果我没有在类a中设置某些属性,我不希望这些属性被复制)复制到类B

例如:

class A
{public string Name {get;set;}
public string Age {get;set;}
}

class B
{public string Name {get;set;}
public string Age {get;set;}
}


A a = new A(){name ="bob"}
现在我有了
bb=newb(){Age=30}

我需要把A复制到B,这样B的名字就被设置好了,年龄就不变了。谢谢

好吧,你可以做如下事情:

if (b.Name == null) b.Name = a.Name;
if (b.Age == null) b.Age = a.Age;

但这不适用于值类型(如
Int32
)。对于这些,如果您控制类型的定义,您可以使用
Nullable

那么,您可以执行以下操作:

if (b.Name == null) b.Name = a.Name;
if (b.Age == null) b.Age = a.Age;

但这不适用于值类型(如
Int32
)。对于这些,如果您控制类型的定义,则可以使用
Nullable

您是说值为null的属性不会被复制吗?如果它是整数属性呢?您如何区分默认值0和设置为0的属性?是的,这是一个棘手的部分,我想知道我们是否能够复制我们明确设置的内容。如果类型不兼容,会发生什么?例如A有一个属性B没有。或者A有一个属性与B中的同一命名属性不兼容。我认为提问者的意思是将属性值从一个对象复制到同一类的另一个对象。是的,它几乎是同一个类,并且有许多类可能需要检查。在每个类中,我也可以有复杂的类型。你是说值为null的属性不会被复制吗?如果它是整数属性呢?您如何区分默认值0和设置为0的属性?是的,这是一个棘手的部分,我想知道我们是否能够复制我们明确设置的内容。如果类型不兼容,会发生什么?例如A有一个属性B没有。或者A有一个属性与B中的同一命名属性不兼容。我认为提问者的意思是将属性值从一个对象复制到同一类的另一个对象。是的,它几乎是同一个类,并且有许多类可能需要检查。在每个类中,我也可以有复杂的类型。