【问题标题】:C# : Difference between method types [duplicate]C#:方法类型之间的区别[重复]
【发布时间】:2012-07-28 00:47:39
【问题描述】:

可能重复:
What is the difference between Public, Private, Protected, and Nothing?

我有一个问题: 这些方法类型有什么区别?

Static , Public , Internal , Protected , const , void

抱歉,我的问题对专业人士来说可能看起来很尴尬,但我真的很想了解其中的区别,顺便说一下,我搜索并阅读了有关它们的文章,但它们都很大而且描述得不好,我只需要一个很好的例子,所以每次我做一个函数时我都可以做决定,因为我总是从 private void 开始........

【问题讨论】:

  • 反对票似乎有点苛刻。我也许可以理解close 投票,但这似乎是一个无法理解现有答案的人真诚地提出的问题。我当然对成为公认的答案有偏见:-)因为据我所知,这可能只是有人躲避作业,但我今天要戴上乐观的眼镜。

标签: c# methods static-methods public-method


【解决方案1】:

您的基本方法如下:

[access modifier?] [static?] [return type or void] [name] ([parameters?])

还有一些额外的点点滴滴,但这是你的开始。

访问修饰符

其中一些是访问修饰符,它们控制哪些类可以访问(可以调用)您放置修饰符的任何内容。

// Anyone can call me
public int SomeMethod() { return 1; } 

// Only classes in the same assembly (project) can call me
internal int SomeMethod() { return 1; } 

// I can only be called from within the same class
private int SomeMethod() { return 1; }

// I can only be called from within the same class, or child classes
protected int SomeMethod() { return 1; }

静态

Static 表示方法/变量由类的所有实例共享。它可以与上面的访问修饰符结合使用。

public class Test
{
  static int a = 0;
  public int SomeMethod() { a = a + 1; return a; }
}

Test t1 = new Test();
t1.SomeMethod(); // a is now 1
Test t2 = new Test();
t2.SomeMethod(); // a is now 2

// If 'a' wasn't static, each Test instance would have its own 'a'

无效

void 仅表示您有一个不返回任何内容的方法:

public void SomeMethod() 
{ 
  /* I don't need to return anything */ 
}

常量

const表示不能修改变量:

const int LIFE = 42;
// You can't go LIFE = 43 now

【讨论】:

  • 这正是我需要知道的,非常感谢。
【解决方案2】:

关键字 publicprivateprotected 和 (protected)internal 被称为 access modifiers 并确定谁可以访问给定的类和/或其成员,这有助于 @987654322 @ 和 abstraction

存储修饰符(感谢 AVD)static 定义了一个 static 方法、属性或类,const 创建一个常量,void 表示返回类型为“无”。

在开发过程中,通常以private void DoSomething() 开头,并且只有当您可以并且需要从外部访问该方法时,才能增加可访问性。如果您希望它在同一个命名空间中被覆盖,则使用protected。如果您正在编写一个供其他应用程序使用的库(在不同的命名空间中),请将其标记为 public,依此类推。

如果您希望它在某个时候返回某些内容,请将void 更改为适当的类型。所有这些(包括决定何时使某些东西成为静态或恒定的)在大多数基本的 OO 书籍和教程中都有解决,尝试选择一个。

【讨论】:

  • 不! static 被称为“存储”修饰符。
【解决方案3】:

这些被称为Access Modifiers

公开

类型或成员可以被同一个中的任何其他代码访问 程序集或引用它的其他程序集。

私人

类型或成员只能被同一类中的代码访问或 结构。

受保护

类型或成员只能被同一类中的代码访问或 struct,或在派生类中。

内部

类型或成员可以被同一程序集中的任何代码访问, 但不是来自另一个程序集。

受保护的内部

类型或成员可以被同一程序集中的任何代码访问, 或由另一个程序集中的任何派生类。

【讨论】:

    【解决方案4】:

    除了CodeCaster所说的……

    void 在声明返回值类型的地方。 void 表示给定方法中没有返回类型。

    const 表示类型为constant,将被定义一次,不会被修改。

    【讨论】:

      猜你喜欢
      • 2013-08-19
      • 2012-04-02
      • 2015-12-11
      • 2010-10-30
      • 2014-05-30
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多