Set this_employee = new Employee(name:="Johnny", age:=69)
无法做到这一点非常烦人,最终您会得到肮脏的解决方案。
泛舟湖上清波郎朗
浏览 414回答 3
3回答
缥缈止盈
这是我最近使用的一个小技巧,可以带来很好的效果。我想与那些经常与VBA战斗的人分享。1.-在您的每个自定义类中实现一个公共启动子例程。我在所有课程中都将其称为InitiateProperties。该方法必须接受您想发送给构造函数的参数。2.-创建一个名为factory的模块,并使用单词“ Create”加上与该类相同的名称以及与构造函数相同的传入参数来创建一个公共函数。该函数必须实例化您的类,并调用第(1)点中解释的初始化子例程,并传递接收到的参数。最后返回实例化和初始化的方法。例:假设我们有自定义类Employee。如前面的示例,必须使用名称和年龄实例化。这是InitiateProperties方法。m_name和m_age是我们要设置的私有属性。Public Sub InitiateProperties(name as String, age as Integer) m_name = name m_age = ageEnd Sub现在在工厂模块中:Public Function CreateEmployee(name as String, age as Integer) as Employee Dim employee_obj As Employee Set employee_obj = new Employee employee_obj.InitiateProperties name:=name, age:=age set CreateEmployee = employee_objEnd Function最后,当您要实例化员工时Dim this_employee as EmployeeSet this_employee = factory.CreateEmployee(name:="Johnny", age:=89)当您有几个班级时特别有用。只需在模块工厂中为每个函数放置一个函数,然后通过调用factory.CreateClassA(arguments),factory.CreateClassB(other_arguments)等进行实例化。编辑正如stenci指出的那样,可以通过避免在构造函数中创建局部变量来使用terser语法执行相同的操作。例如,CreateEmployee函数可以这样编写:Public Function CreateEmployee(name as String, age as Integer) as Employee Set CreateEmployee = new Employee CreateEmployee.InitiateProperties name:=name, age:=ageEnd Function哪个更好