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# 的类的属性与类的变量有啥区别?不是都能用"."访问吗?的主要内容,如果未能解决你的问题,请参考以下文章

java接口和类有啥区别?

第8章 类的高级概念

java类和接口的区别

有啥方法可以使变量类型与它所在的类的类型相同,并且是静态的和 const 而不是指针?

接口和抽象类的区别

类型和类有啥区别?