C#,class A 和public class A有啥区别?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#,class A 和public class A有啥区别?相关的知识,希望对你有一定的参考价值。

参考技术A 这个的区别其实指的就是C#中访问修饰符的区别,C#访问修饰符分为:public、private、protected和internal,通俗点来讲就是访问修饰符就像是权限,不同的访问修饰符可以有不同的权限。

不指定访问修饰符,那么即为默认访问修饰符,那么你的Class A 等价于 internal Class A
下面就讲讲这几个访问修饰符的区别:

程序集:所谓程序集就是经由编译器编译得到的,供CLR(公共语言运行时)进一步编译执行的中间产物,在windows系统中,其一般表现为.dll或者.exe形式。

public:同一个程序集的任何代码或引用该程序集的其他程序集都可以访问该类型或成员
internal:同一个程序集的任何代码都可以访问该类型或成员
private :只有在结构或类中的代码可访问该类型或成员
protected:只有同一类或结构或者此类的派生类中的代码才可以访问的类型或成员

对于struct和class的认识

之前一直以为c++中有class的原因是c中的struct不能有构造函数,析构函数,继承等功能,没想到struct也可以实现这些功能。

只不过class中默认的关键字是private,而struct中默认的关键字是public。

以一个例子来说明用struct实现类的一些功能。

eg:

#include <iostream>
using namespace std;
enum BREED {GOLDEN,CAIRN,DANDIE,SHETLAND,DOBERMAN,LAB};//BREED是一种数据类型了,其值可以是括号里的任意一个,第一个默认为0

struct Mammal
{
protected:
int itsAge;
int itsWeight;
public:
Mammal() :itsAge(2), itsWeight(5){}
~Mammal(){}
int GetAge() const { return itsAge; }
void SetAge(int age){ itsAge = age; }
int GetWeight() const { return itsWeight; }
void SetWeight(int weight){ itsWeight = weight; }

void Speak() const { cout << "\n Mammal sound! \n"; }
void Sleep() const { cout << "\n Shhh.I‘m sleeping"; }
};

struct Dog :public Mammal
{
private:
BREED itsBreed;
public:
Dog() :itsBreed(GOLDEN){}
~Dog(){}
BREED getBreed() const { return itsBreed; }
void SetBreed(BREED breed){ itsBreed = breed; }
void WagTail() const { cout << "Tail wagging...\n"; }
void BegForFood() const { cout << "Begging for food...\n"; }
};

int main()
{
Dog fido;
fido.Speak();
fido.WagTail();
cout << "Fido is " << fido.GetAge() << "years old \n";
return 0;
}

 

输出为:Mammal sound!

Tail wagging...

Fido is 2years old

以上是关于C#,class A 和public class A有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

关于使用public class 和 class声明类的区别

java语言中的class和public class的区别

对于struct和class的认识

php class

C++/CLI:Public ref struct 生成 C2011:'class' 类型重新定义

class和struct