1

我想知道哪种方式是创建接收parameters1 或 2 之类的低数量的方法的最佳方式。

第一个:传递一个实体类对象作为参数。

MyClass entity = new MyClass();
BDClass bd = new BDClass();
entity.Name = "Alan";
bd.InsertName(entity);

public void InsertName(MyClass entity)
{
     ///A simple Insert/Select
}

第二个:即使在OO上编程,使用变量作为参数,而不是实体类。

BDClass bd = new BDClass();
string name = "Alan";
bd.InsertName(name);  

public void InsertName(string name)
{
  ///A simple Insert/Select
}

我想知道考虑到性能和编程的良好实践,哪一个是最好的。还是视情况而定?我的意思是,我想只有当它是一个大的类,以及参数量少的变量时才使用实体类作为参数会更好。

我知道它与代码本身无关,但我只想了解其中一个是正确的编程方式

4

4 回答 4

2

没有大的差异和正确的答案。既然你可以写成第二种形式,而且方法名是InsertName,我更喜欢第二种形式。

为什么?首先,它只需要一个名称(字符串),否则只有一个参数是不够的。其次,您可以将任何名称传递给它,无论它来自MyClass或其他任何地方。

如果你真的需要传递MyClass给定类型的对象,那么你需要的不仅仅是一个名字,你不能只传递一个名字字符串来替换。在这种情况下,MyClass可能是BDClass.

于 2013-05-29T12:13:24.310 回答
1

这取决于您正在处理的情况。如果您要添加实体类的整个对象并且您的方法是在某个 c# 库项目中编写的,并且您想在其他项目中使用该方法,在该项目中您收集有关该实体对象的全部信息,那么第一种方法方法适合您...但是最后,您想做什么完全取决于您。

于 2013-05-29T12:01:43.247 回答
1

两者都是正确的,当正确性在 C# 中定义为有效时。

根据使用情况,人们可能会选择一种模式或另一种模式。没有千篇一律的方法,您不会看到任何性能差异。

例如,如果你想验证一个现有的类型对象,MyClass那么你会期望一个完整的项目。这同样适用于传入具有大量属性的对象,或者需要的参数数量会随着时间的推移而增加。

于 2013-05-29T12:05:14.703 回答
1

这取决于。

如果您的方法正在处理(数据/域)实体,则它甚至不应该是一个类;而是一个接口——你将把它提供给我使用 IoC 框架的方法。

如果需要频繁地传递给其他代码块,以另一个类的形式;那么使用实体类可能更容易,它将映射到结果类型。

它是一个纯粹的函数,它只是计算一些东西(它的算法不会改变,你不使用类似策略模式的东西)然后你可以只使用命名参数。

这些不是所有可能的情况。这些只是(恕我直言)执行此任务的好方法。

我总是从简单的命名参数开始!避免过早优化!等待代码中的模式出现。

于 2013-05-29T12:05:37.173 回答