这篇文章将为大家详细讲解有关谈C#中构造函数和成员函数的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
在写程序的时候,往往会出现为一个类型提供不同场景的构造函数,可能大多构造函数比较相似,而C#中又不允许缺省参数,因此构造函数的编写无疑是一个重复工作。但是使用Copy和Paste来完成构造函数的编写,有时候很难达到统一,尤其是当成员发生变化的时候。因此比较常见的替换方法就是为构造函数提供一个统一的成员函数来完成初始化工作。
publicclassMyClass { privateint_Age; privatestring_Name; publicMyClass(stringName) { InitMember(Name,20); } publicMyClass(stringName,intAge) { InitMember(Name,Age); } ///<summary> ///Initclassmembers ///</summary> ///<paramnameparamname="Name"></param> ///<paramnameparamname="Age"></param> privatevoidInitMember(stringName,intAge) { _Age=Age; _Name=Name; } }
不过,在C#中提供了更为简明的方法,就是在构造函数初始化语句中调用另一构造函数,那么上面的形式可以改写为如下这样。
public class MyClass { private int _Age; private string _Name; public MyClass( string Name):this( Name, 20 ) {} public MyClass( string Name, int Age ) { _Age = Age; _Name = Name; } }
对于这两者来说,执行效率没有太大差别,但从代码质量而言,后者要好很多,而且会使代码看起来更清晰。
其次,对于基类的调用。由于成员函数不能调用基类的构造函数,所以对于***种编写就比较困难,后者就简单多了。
publicclassMyClass:BaseClass { privateint_Age; privatestring_Name; publicMyClass(stringName):this(Name,20) {} publicMyClass(stringName,intAge):base(Name,Age) { _Age=Age; _Name=Name; } }
这里要提的一点就是构造函数初始化语句,对于“this”或者“base”之类的调用只能有一个,不能并存。
***,就是对于readonly常量的初始化,由于readonly常量只能通过成员初始化语句或者在构造函数中被修改,因此在成员函数中无法修改readonly常量,这也是构造函数初始化语句要比成员函数好的重要一个因素。
关于谈C#中构造函数和成员函数的作用是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。