c# 的类的属性与类的变量有啥区别?不是都能用"."访问吗?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 的类的属性与类的变量有啥区别?不是都能用"."访问吗?相关的知识,希望对你有一定的参考价值。
参考技术A 不一样的,属性是对类变量的一种封装,使其使用更安全。我们在做开发时,基本上不会把变量暴露给外部类的,都会使用属性进行封装。 参考技术B 类是单继承的,一个基类可以派生多个子类,就算是有get、set父类也不可能访问子类,只有子类才能访问父类,而子类可以继承父类中的所有成员!有啥方法可以使变量类型与它所在的类的类型相同,并且是静态的和 const 而不是指针?
【中文标题】有啥方法可以使变量类型与它所在的类的类型相同,并且是静态的和 const 而不是指针?【英文标题】:Any way to make a variable type the same type as the class it is in and being static and a const and not a pointer?有什么方法可以使变量类型与它所在的类的类型相同,并且是静态的和 const 而不是指针? 【发布时间】:2021-07-24 18:16:17 【问题描述】:我想要一个与它所在的类相同类型的变量。我不想使用指针。我希望它是静态的和常量。我还没有找到一种方法来做到这一点。我也想要一个标识符。
当我使用指针时,我得到了所谓的“内存泄漏”。
我想要什么:
class A
std::string str;
A(std::string str) : str(str)
static const A b("hi");
【问题讨论】:
要么需要将声明和定义分开,要么标记定义inline 实际上我不确定您是否可以在类定义中直接使用inline static const
,因为此时A
是一个不完整的类型。但是你仍然可以do this有一个单独的定义
你想改造单身人士吗?
感谢@NathanPierson,帮了大忙!
现在我明白了,内联说明符只允许在函数上使用
【参考方案1】:
怎么样
class A
std::string str;
A(std::string str) : str(str)
static const A& getA()
static const A b("hi");
return b;
这可能是一个解决方案,具体取决于您的需求。
【讨论】:
以上是关于c# 的类的属性与类的变量有啥区别?不是都能用"."访问吗?的主要内容,如果未能解决你的问题,请参考以下文章