C#:方法类型之间的区别[重复]
Posted
技术标签:
【中文标题】C#:方法类型之间的区别[重复]【英文标题】:C# : Difference between method types [duplicate] 【发布时间】:2012-07-28 00:47:39 【问题描述】:可能重复:What is the difference between Public, Private, Protected, and Nothing?
我有一个问题: 这些方法类型有什么区别?
Static , Public , Internal , Protected , const , void
抱歉,我的问题对专业人士来说可能看起来很尴尬,但我真的很想了解其中的区别,顺便说一下,我搜索并阅读了有关它们的文章,但它们都很大而且描述得不好,我只需要一个很好的例子,所以每次我做一个函数时我都可以做决定,因为我总是从 private void 开始........
【问题讨论】:
可能与***.com/a/2521492/1495442重复 反对票似乎有点苛刻。我也许可以理解close
投票,但这似乎是一个无法理解现有答案的人真诚地提出的问题。我当然对成为公认的答案有偏见:-)因为据我所知,这可能只是有人躲避作业,但我今天要戴上乐观的眼镜。
【参考方案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】:关键字 public
、private
、protected
和 (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,将被定义一次,不会被修改。
【讨论】:
以上是关于C#:方法类型之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章