首页 > 编程语言 >C# 中的 public、static 和 void 关键字有什么区别

C# 中的 public、static 和 void 关键字有什么区别

时间:2024-10-27 22:21:39浏览次数:4  
标签:C# void 修饰符 访问 static public

在C#编程语言中,publicstaticvoid都是关键字,但它们具有不同的目的和用途。public是一个访问修饰符,表示类或类的成员可以从任何地方访问;static指定某一成员属于类型本身,而不是某个对象实例;而void是一个返回类型,表示方法不返回任何值。理解这三个关键字的核心差异对于编写高效和准确的C#代码至关重要。

1、public: 访问修饰符

C#中的public关键字是一个访问修饰符。使用它可以确保类、结构、枚举或接口可以从其他任何代码位置访问。如果没有指定访问修饰符,将默认为private。使用public是为了使某些代码元素向外公开,并能够在其他地方使用。

例子:

public class HelloWorld { public string Greet() { return "Hello, World!"; } }

2、static: 类型级别的成员

static关键字在C#中用于声明一个静态成员。这意味着这个成员属于类本身,而不是类的某个实例。因此,静态成员在内存中只有一个副本,不需要创建类的实例就可以访问它。

例子:

public class Calculator { public static int Add(int a, int b) { return a + b; } } // 调用方法 int result = Calculator.Add(5, 3);

3、void: 无返回的方法

void关键字在C#中表示方法不返回任何值。通常,当您希望方法执行某些操作但不需要返回任何结果时,可以使用void作为返回类型。

例子:

public class Printer { public void PrintMessage(string message) { Console.WriteLine(message); } }

结论:虽然publicstaticvoid都是C#的基本关键字,但它们的用途和含义是完全不同的。public控制访问级别,static定义类型级别的成员,而void指定一个方法不返回任何值。理解它们的区别和如何使用是每个C#开发者的基本技能。


常见问答:

Q1: 如果一个方法既是 public 又是 static,它的含义是什么?

A1: 当一个方法被标记为 public static,这意味着该方法既可以从其他类和代码位置访问(因为它是public的),又属于类本身而不是类的任何特定实例(因为它是static的)。这样的方法通常用于实用程序或工具方法,不依赖于任何特定对象的状态。

Q2: 如果不为类成员指定访问修饰符,它默认是什么修饰符?

A2: 在C#中,如果不为类的成员指定任何访问修饰符,它默认是 private。这意味着该成员只能从其包含的类内部访问。

Q3: 为什么我无法在非静态方法中直接访问静态成员?

A3: 实际上,在非静态方法中是可以直接访问静态成员的。但反过来就不行,静态方法不能直接访问非静态成员,因为静态方法属于类本身,而非静态成员需要类的实例来访问。

Q4: 如果我有一个返回类型为void的方法,我是否可以在该方法中使用return语句?

A4: 是的,你可以在返回类型为void的方法中使用return语句,但这样的return语句后面不能跟任何值。它通常用于提前结束方法的执行。

标签:C#,void,修饰符,访问,static,public
From: https://www.cnblogs.com/cuay/p/18501211

相关文章

  • 13 Docker容器单机网络架构全攻略:使用自定义桥接的实践与探索
    文章目录Docker容器单机网络架构全攻略:使用自定义桥接的**实践与探索**五使用自定义docker桥接网络5.1重新创建新的容器5.2重新创建新的容器,并且指定网络5.3docker网桥切换Docker容器单机网络架构全攻略:使用自定义桥接的实践与探索五使用自定义do......
  • 11 Docker容器单机网络架构全攻略:深入探索内外网互访的奥秘
    文章目录Docker容器单机网络架构全攻略:深入探索内外网互访的奥秘三docker网络基础2-内外网互访3.1docker容器互访3.2docker容器访问外网3.3容器外部网络访问内部网络3.4查看容器详细信息3.5查看容器ip地址3.6查看网络端口地址转换Docker容器......
  • CF1738F 题解
    blog。duel的时候对上了脑电波很快过了,记一下这种我本来完全不会的题。肯定是搞掉平方。把\(n_c\)移到左边:\(\dfrac{\sum\limits_{u\inS}deg_u}{|S|}=\text{平均数}\le|S|\)。然后直接放缩左边,于是一个充分条件是:\[\max\limits_{u\inS}deg_u\le|S|\]考虑构造合法解。......
  • 基于pytorch搭建CNN
    先上代码importtorchimporttorch.nnasnnimporttorch.optimasoptimimporttorch.nn.functionalasFfromtorchvisionimportdatasets,transformsimportmatplotlib.pyplotaspltimportnumpyasnpimportpandasaspdimportmatplotlibmatplotlib.use('......
  • CuTest C语言单元测试框架
    CuTestC语言单元测试框架Cutest是一个轻量级的C/C++单元测试框架,旨在提供简单、易用的测试功能。它的主要特点包括:简洁性:Cutest以简洁的语法使得编写测试用例变得容易,降低了学习曲线。灵活性:支持多种测试风格,可以根据需要进行定制。单头文件:Cutest仅包含一个头文件,......
  • 《 C++ 修炼全景指南:十七 》彻底攻克图论!轻松解锁最短路径、生成树与高效图算法
    摘要1、引言1.1、什么是图?图(Graph)是计算机科学和离散数学中一种重要的数据结构,用来表示一组对象之间的关系。一个图由顶点(也称为节点,Vertex)和边(Edge)组成。顶点表示实体,而边则表示实体之间的关联或连接关系。根据边的性质,图可以分为无向图和有向图。在无向图中,边没有方向......
  • [BJDCTF2020]ZJCTF,不过如此
    打开题目就是源码看到使用file_get_contents()函数打开text,看到file就想到了文件包含,但是本题使用file://协议并不行,里边有个封装的text文件,需要使用data://协议php5.2.0起,数据流封装器开始有效,主要用于数据流的读取,如果传入的数据是PHP代码就会执行代码。使用方法为:data:......
  • [BJDCTF2020]The mystery of ip
    (PHP的Twig模版注入漏洞,Smarty模板的SSTI漏洞)打开题目目录扫描,扫出来DS_Store、flag.php、header.php,访问flag.php访问header.php,flag就是上面那个点击hint在flag.php中有IP,题目翻译过来就是ip的奥秘,推测有x-forword-for注入,抓一下包修改请求头,添加一个X-Forwarded-......
  • 你不知道的JavaScript(中卷)
    书pan.baidu.com/s/14cPqfkAgg3VLKETfDcoVew?pwd=953k一些关键技术:一、类型和语法JavaScript的内置类型JavaScript有七种内置类型,分别是:null、undefined、boolean、number、string、object和symbol(ES6中新增)。除object之外,其他类型统称为“基本类型”。可以使用typeof运算符......
  • CSP-S 2024 游记/题解
    CSP-S2024去年S打成屎了,我要蓝√!!!!!!!!CSP怎么能不CS?CS了一个上午,顺便背了下快读。进厂!看见了退役的同学在做志愿者,祝他未来可期吧。也希望自己能够超常发挥。垃圾鼠标真难用。很好,全是传统题。只有T2开了两秒。T1,这不排个序然后优先队列乱搞就好了。5min过了,NOIP我来......