首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >继承访问修饰符?

继承访问修饰符?
EN

Stack Overflow用户
提问于 2012-02-08 14:50:11
回答 3查看 607关注 0票数 0

假设我有一个类:

代码语言:javascript
复制
public class Products
{
    public string ID { get; set; }
    public string Name { get; set; }

    public string GetItemName() {  ... }
    public void SetItemName() {  ... }
    public string GetItemID() {  ... }
    public void SetItemID() {  ... }

    //...
}

可以让所有的属性或方法继承父类的访问修饰符,这样我就不必为每个属性/方法分配public。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-08 17:23:29

代码语言:javascript
复制
public string Name { get; set; }
public string GetItemName() {  ... }
public void SetItemName() {  ... }

那不是C#代码,那是C++。一种不支持属性,但支持以下内容的语言:

代码语言:javascript
复制
public:
    string GetItemName();
    void SetItemName();

这可能就是你真正想要的。不,永远不要错误地将C#与C++进行比较,它只是在传递时与语言相似。访问者关键字必须应用于每个成员。值得庆幸的是,你将拥有更少的数据。删除GetItemName和SetItemName方法,只需Name属性即可。

这是一篇可能对你有用的旧杂志文章,"C++ -> C#: What You Need to Know to Move from C++ to C#

票数 1
EN

Stack Overflow用户

发布于 2012-02-08 16:52:19

对于class,没有办法做到这一点。这就是C#语法的定义方式。如果您跳过访问修饰符,那么将应用默认值,对于类,它将是内部修饰符,对于它们的成员,它将是私有的。

根据specification,其他默认值为:

与类一样,

  • 接口可以声明为公共类型或内部类型。与类不同,接口默认为内部访问。默认情况下,接口成员始终是公共的,访问修饰符都不能是applied.
  • Namespaces,枚举成员也不能是公共的,访问修饰符都不能是具有内部访问权限的。
  • 默认情况下,在命名空间内或在编译单元的顶级声明的任何类型(例如,不在命名空间、类或结构内)都是内部类型,但可以设置为公共类型。
票数 0
EN

Stack Overflow用户

发布于 2012-02-08 16:59:41

不,语言规范说明如果您不指定访问修饰符,将使用默认修饰符:

默认情况下,类和结构中的

  • 成员是私有的。
  • 类型(类、结构、委托、接口和枚举)默认情况下是内部的,除非它们在默认情况下设置为

成员时放在另一个类型(嵌套类)中,枚举成员和命名空间没有可访问性修饰符的概念,但可以认为它们始终是公共的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9188924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档