类有两个构造函数

时间:2018-07-12 07:49:55

标签: c# .net

我的课有两个构造函数

class test()

    // declare
    par1 as object, par2 as  object , par3 as object

    // constructors
    public test(par1, par2) {,,,,}
    public test(par1, par2, par3) {,,,,,}

    // Methods 
     fct1() 
     {
          '' do something with par1 and par2
     }


     fct2(){

           if(par3 is null) 
             throw exception ('be sure to use the right constructor ) 
           else
           '' do something with par1 and par2
             and par3
     }

我的问题:

可以有两个这样的构造函数:

因为如果有人需要使用fct2,他应该 使用构造函数编号2(带有3个参数) 否则它将引发异常

可以,还是有其他更好的解决方法

ps:如果我更改第一个构造函数,则在所有地方实现此类      我需要更改每个被称为

的地方

谢谢。

1 个答案:

答案 0 :(得分:2)

因此,您有一个包含两个方法的类,第二个方法为第一个方法添加了功能。听起来像是继承的理想人选:

DocumentRoot /home/neko/www/react/dist
<Directory "/home/neko/www/react/dist">
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} -f [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^ - [L]
    RewriteRule ^ index.html [L]
  </Directory>

然后继承它以适应其行为:

public class FirstImplementation
{
    public FirstImplementation(param1, param2)
    {
    }

    public virtual Bar Foo()
    {
        // do something with param1, param2
    }
}

因为您不希望一个类包含两次相同的代码并稍作改动,所以类要求调用者在调用其方法之一之前先知道要调用哪个构造函数,否则当调用错误的构造函数时会抛出InvalidOperationException 。那是无法使用和维护的。