2012-07-30 135 views
3

可能重复:
What is the difference between Public, Private, Protected, and Nothing?C#:方法类型之间的区别

我有一个问题: 是什么,这些方法类型之间的区别?

Static , Public , Internal , Protected , const , void 

对不起我的问题可能看起来笨拙的专业人士,但我真的想了解的差异,并顺便我搜索和阅读他们的文章,但他们都大,没有得到很好的描述,我只需要一个很好的例如每个所以我可以每次我做一个功能做出的决定,因为我总是以私人无效开始........

+0

可能重复的http://stackoverflow.com/a/2521492/1495442 – Ria 2012-07-30 10:57:32

+0

downvotes似乎有点苛刻。也许我可以理解“接近”的选票,但这似乎是一个真诚的问题,由无法理解现有答案的人来解决。当然,我被接受的答案偏向于:-),因为它可能只是为我所知道的所有人躲避作业,但我今天要把我的乐观主义眼镜放在眼里。 – 2012-07-30 11:20:58

回答

20

你的基本方法有以下几点:

[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

这正是我需要知道的,非常感谢。 – 2012-07-30 11:14:21

4

关键字publicprivateprotected和(protectedinternal,被称为access modifiers并确定谁可以访问给定的班级和/或其成员,这有助于在encapsulationabstraction

存储改性剂(感谢AVD)static限定static方法,属性或类,const创建一个常数和void表示“无”的返回类型。

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

如果您希望它在某些时候返回某些内容,请将void更改为适当的类型。所有这些(包括决定何时做出静态或常量的东西)在大多数基本的面向对象的书籍和教程中都可以找到,试着拿一个。

+1

不!静态称为“存储”修改器。 – adatapost 2012-07-30 10:54:39

2

这些被称为Access Modifiers

公共

类型或构件可以由任何其他代码在相同 组件或引用它的另一个组件进行访问。

私人

的类型或成员只能由代码在同一类或 结构进行访问。

保护

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

内部

的类型或成员可以通过任何代码在相同的组件进行访问, 但不能从另一个组件。

保护内部

类型或构件可以通过在相同的组件中, 任何代码或通过在另一组件中的任何派生类访问。

1

除了什么CodeCaster说...

无效是在返回值的类型声明的地方。 Void意味着在给定的方法中没有返回类型。

const表示类型为constant并且将被定义一次,然后不被修改。

相关问题