C#学习三之几个关键字Static,ref&out,get&set,readonly

本文详细介绍了C#中的静态字段、静态方法及静态类的应用场景,并对比了ref与out关键字的区别。此外,还讲解了如何利用get和set实现属性的安全访问,以及readonly关键字的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

static

静态字段,静态方法是属于类的,可以被类的所有实例使用。
静态字段有时候也被作为简单的缓存使用。
静态类是一种约束,约束类里边的方法和字段都必须是静态的,比如有些经常要用到的数学公式如Sin(),Cos(),可以将这些函数和变量封装在静态类中。

 

ref&out

ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。并且用ref传递参数之前变量必须初始化。

out 关键字会导致参数通过引用来传递。这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。

尽管 ref 和 out 在运行时的处理方式不同,但在编译时的处理方式相同。因此,如果一个方法采用 ref 参数,而另一个方法采用 out 参数,则无法重载这两个方法。

 

get&set

C# get set不提倡将域的保护级别设为 public而使用户在类外任意操作--那样太不OO,或者具体点说太不安全!对所有有必要在类外可见的域,C#推荐采用属性来表达。属性不表示存储位置,这是属性和域的根本性的区别。而且两者必须在同一个属性名下声明,而不可以将它们分离

 

readonly

需要使用静态构造方法初始化,但又不希望数值被改变的时候使用关键字readonly。

readonly成员只能在下面的两种情况下被赋值: 1. Static constructor 2. A variable initializer

转载于:https://www.cnblogs.com/clownice/p/4381415.html

<think>好的,我现在需要帮助用户查找C#编程语言中的关键字列表或表格。首先,用户的问题很明确,他们需要一份C#关键字列表,可能用于学习或编程参考。根据系统指令,我需要确保回答结构清晰,语法正确,并且生成相关问题。 首先,我需要回忆C#关键字C#关键字分为保留关键字和上下文关键字。保留关键字如`class`、`void`、`int`等是语言的核心部分,不能用作标识符。上下文关键字如`var`、`async`、`await`则在特定语境下有特殊含义,但可以用作标识符。我需要将这些分类列出,并给出每个类别的例子。 接下来,我需要检查是否有相关的引用内容可以支持回答。查看用户提供的引用,引用[1]是关于C#中使用`foreach`遍历数组的示例,引用[4]涉及C#方法的定义。这些可以作为示例来补充关键字的使用场景,比如在引用[1]中`foreach`是一个上下文关键字,可以在此处说明其用法。此外,引用[3]提到SQL Server,可能与C#的数据库操作有关,但暂时不相关。引用[2]提到其他函数式编程语言,可能不直接相关,但可以忽略。 然后,我需要确保回答符合格式要求:行内数学表达式用$...$,独立公式用$$...$$,但这里可能不需要数学公式。需要正确使用LaTeX语法,但关键字列表主要是文本,所以重点放在代码块和列表格式上。用户需要中英文混合,但回答要用中文,所以关键字用代码符号标出,解释用中文。 生成相关问题方面,用户可能对关键字的用途、区别、最新变化等感兴趣。我需要设计相关问题,例如关键字的用途、保留与上下文关键字的区别、版本变化中的新增关键字,以及如何避免冲突的方法。 最后,确保回答结构清晰,分点列出保留关键字和上下文关键字,并提供代码示例,如引用[1]中的`foreach`,引用[4]中的`protected`和`override`。同时,在末尾添加相关问题,帮助用户进一步学习。</think>### C# 编程语言关键字列表 C#关键字分为**保留关键字**和**上下文关键字**。以下是分类说明及完整列表: #### 1. 保留关键字(共79个) 不可用作标识符,用于定义语法结构: ```csharp abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long namespace new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual void volatile while ``` #### 2. 上下文关键字(共28个) 仅在特定语法位置具有特殊含义,可用作标识符: ```csharp add alias async await dynamic from get global group into join let nameof notnull on orderby partial remove select set unmanaged value var when where where yield ``` #### 示例代码(引用自用户提供的资料) ```csharp // 使用 foreach 上下文关键字遍历数组(对应引用[1]) foreach (int j in n ) { int i = j-100; Console.WriteLine("Element[{0}] = {1}", i, j); } // 使用 protected 和 override 保留关键字(对应引用[4]) protected override ReturnData ValidateTicket(...) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值