提问人:Mary 提问时间:7/24/2023 最后编辑:Mark SeemannMary 更新时间:7/25/2023 访问量:54
在返回新对象 C# 时,如何根据不同属性的值将属性分配给值?
How to assign a property to a value depending on the value of a different property when returning a new object C#?
问:
我有一个 C# 项目。我有以下类:
public class MyClass
{
public int Id { get; set; }
public string Info { get; set; }
public string Name { get; set; }
}
然后,在我的一个业务逻辑方法中,我返回一个 类型的新对象 ,但问题是设置属性,例如 或者我需要调用一个不同的逻辑来获取 和 基于该属性。但是,由于返回一个新的 MyClass 对象,我无法在将值分配给其他属性时引用属性,这里有一个代码片段,其中包含我的意思的注释:MyClass
Info
Name
Info
Name
Id
public MyClass GetNewMyClassObject(List<int> ids)
{
return new MyClass
{
Id = GetCurrentId(ids),
Info = GetInfoFromId(?),//CAN'T PASS "Id" as a parameter here, it doesnt exist
// in the context so I have
//to call GetCurrentId(ids) to pass the Id to GetInfoFromId() again!
Name = GetNameFromId(?)
}
}
答:
2赞
rotabor
7/24/2023
#1
public MyClass GetNewMyClassObject(List<int> ids)
{
var id = GetCurrentId(ids);
return new MyClass
{
Id = id,
Info = GetInfoFromId(id),
Name = GetNameFromId(id)
}
}
2赞
Jonathan Dodds
7/25/2023
#2
根据我之前的评论:
在 MyClass 的 new 之前调用 GetCurrentId(ids),并将返回值分配给局部变量。然后在对象初始化中使用该局部变量。
例如:
public MyClass GetNewMyClassObject(List<int> ids)
{
int id = GetCurrentId(ids);
return new MyClass
{
Id = id,
Info = GetInfoFromId(id),
Name = GetNameFromId(id)
}
}
0赞
Ed'ka
7/25/2023
#3
在 C# 8 中,具有单个 var 模式的开关表达式可用于声明共享绑定变量,例如:
public MyClass GetNewMyClassObject(List<int> ids) =>
GetCurrentId(ids) switch
{
var id => new MyClass
{
Id = id,
Info = GetInfoFromId(id),
Name = GetNameFromId(id)
}
};
上一个:如何达到嵌套在对象中的对象的值?
下一个:对象列表的分段错误问题
评论
GetCurrentId(ids)
new
MyClass