C# 这种使用动态的做法不好吗?
我想知道这个代码是不是一个坏习惯C# 这种使用动态的做法不好吗?,c#,linq,object,dynamic,C#,Linq,Object,Dynamic,我想知道这个代码是不是一个坏习惯 .. var StoresInData = (from s in MainData orderby s.LocationCode select new { s.LocationCode, s.LocationShortName,
..
var StoresInData = (from s in MainData
orderby s.LocationCode
select new
{
s.LocationCode,
s.LocationShortName,
s.LocationName
}).Distinct().ToList();
..
foreach (var store in StoresInData)
{
CreateReportForStore(store);
..
..
}
在CreateReportForStore函数中:
private void CreateReportForStore(dynamic store)
{
var a = store.LocationCode;
Console.WriteLine(a);
..
..
}
在这种情况下,使用动态传递匿名对象是一种不好的做法吗
谢谢如果需要传递,最好使用类型化类。使代码更具可读性和可维护性。此外,它还减少了出错的可能性 如果需要传递,最好使用类型化类。使代码更具可读性和可维护性。此外,它还减少了出错的可能性 通常,我使用dynamics的唯一目的是从API返回对象属性的子集。如果它在后端传递,那么我将为它创建一个对象。通常,我使用dynamics的唯一目的是从API返回对象属性的子集。如果它是在后端传递的,那么我会为它创建一个对象。使用dynamic传递匿名对象是一种糟糕的代码味道。如果我在查看某人的代码,我会告诉他们为其创建一个数据类。另外,请注意,
dynamic
仍然维护可访问性修饰符。由于匿名类型是内部
(非契约),因此在不同的程序集中将其作为动态
传递将导致错误。只要做你自己的类型,这是值得的时间。特别是如果C#编译器团队决定在将来将它们设置为private
:使用PUsing dynamic传递匿名对象是一种糟糕的代码味道。如果我在查看某人的代码,我会告诉他们为其创建一个数据类。另外,请注意,dynamic
仍然维护可访问性修饰符。由于匿名类型是内部
(非契约),因此在不同的程序集中将其作为动态
传递将导致错误。只要做你自己的类型,这是值得的时间。特别是如果C#编译器团队决定在将来将其私有化
:请不要提及性能开销,因为类型是在运行时解析的。更不要说性能开销,因为类型是在运行时解析的。