在C#中,为什么结构体不能添加无参构造方法?

在C#中,为什么结构体不能添加无参构造方法?,第1张

这个是硬性规定的,我的理解是:

因为struct不能设初始化器,也就是说,初始化时本身并没有初值,

你给它一个无参数的构造函数,假设你忘了在里面初始化数据,系统就不能生成这个struct,而且因为struct是值类型,也不能给你返回null,这就无法进行了。

所以为了安全起见,就这么规定,struct不能有无参构造函数。

在执行拷贝构造函数时,其实会调用拷贝构造函数在函数内创建一个临时对象。如果我们的拷贝构造函数的参数不是引用,那么拷贝构造函数又会重复调用拷贝构造函数,就这样永远的递归调用下去了。除此以外,一般还要加上 const ,防止对原始的结构体修改。

这部分我查了很多资料也不知道如何区分结构体内的成员函数和非成员函数,好像如果返回值是类本身就是成员函数,如果返回的是其他类就是非成员函数(暂且这么理解吧)

此时只需要一个参数即可

需要两个参数,并且声明的时候需要加 friend ,原因就如上面提到的,为了让其他类能访问到该类的私有数据。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11936696.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存