C#:方法类型的区别

4
可能重复:
Public、Private、Protected 和 Nothing 有什么区别? 我有一个问题: 这些方法类型有什么区别?
Static , Public , Internal , Protected , const , void

对于专业人士来说,我的问题可能似乎有些尴尬,但我真的想了解它们之间的区别。顺便说一下,我搜索并阅读了关于它们的文章,但它们都很长而且描述不清楚。我只需要每个的一个好的例子,这样我每次创建函数时就可以做出决策,因为我总是以"private void"开始......


请仅返回翻译文本:可能是https://dev59.com/cnE85IYBdhLWcg3w9orw#2521492的副本 - Ria
这些踩票似乎有点过分了。我可以理解“关闭”投票,但这似乎是一个由某人提出的善意问题,他们无法理解现有的答案。当然,我因为被接受的答案而有偏见 :-) 因为我不知道这只是某人逃避作业,但今天我要戴上我的乐观眼镜。 - Matt Mitchell
4个回答

21
您的基本方法具有以下特点:
[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; }

静态

静态 意味着该方法/变量被该类的所有实例共享。它可以与上面的访问修饰符结合使用。

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

void 意味着您有一个不返回任何内容的方法:

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

const

const 表示该变量不能被修改:

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

4
关键字 publicprivateprotected 以及 (protected) internal,被称为访问修饰符,决定了可以访问给定类及/或其成员的人,这有助于封装抽象化

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

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

如果您希望它在某个时候返回某些内容,则将 void 更改为适当的类型。所有这些内容(包括决定何时使某些值为静态或常量)都在大多数基本面向对象的书籍和教程中有所涉及,请尝试学习一下。


1
不对!static 被称为“存储”修饰符。 - KV Prajapati

2

这些被称为访问修饰符

public

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

private

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

protected

该类型或成员只能由同一类或结构中的代码或派生类中的代码访问。

internal

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

protected internal

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


1

除了CodeCaster所说的之外...

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

const表示该类型是一个常量,将被定义一次,然后不会被修改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接