千家信息网

C#中关键字get、set、value、partial、where和yield怎么用

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章主要介绍C#中关键字get、set、value、partial、where和yield怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!C#关键字--get、set、
千家信息网最后更新 2025年11月09日C#中关键字get、set、value、partial、where和yield怎么用

这篇文章主要介绍C#中关键字get、set、value、partial、where和yield怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

C#关键字--get、set、value

get 在属性或索引器中定义"访问器"方法,以检索该属性或该索引器元素的值。

set 义属性或索引器中的"访问器"方法,用于设置属性或索引器元素的值。

value 隐式参数,用于设置访问器以及添加或移除事件处理程序。

// 简单示例  class Employee  {  private string _name;  public string Name      {  get { return this._name;  }  set { this._name = value; }      }  }

注意:

get、set"访问器",在默认情况下具有相同的访问级别。但是有时鉴于对读写的考虑,通常可以限制set的访问级别。对属性或索引器使用访问修饰符受以下条件的制约:

不能对接口或显式接口成员实现使用访问器修饰符。

仅当属性或索引器同时具有 set 和 get 访问器时,才能使用访问器修饰符。这种情况下,只允许对其中一个访问器使用修饰符。

如果属性或索引器具有 override 修饰符,则访问器修饰符必须与重写的访问器的访问器(如果有的话)匹配。

访问器的可访问性级别必须比属性或索引器本身的可访问性级别具有更严格的限制。

C#关键字--partial

partial 分部类型定义允许将类、结构或接口的定义拆分到多个文件中。

[modifiers] partial type

modifiers是可选的。可以是abstract、new、override、static、virtual、extern,以及访问修饰符中的一个。

type 可以是类、结构和接口之一。

示例:

以下的部分类在编译时,将会合并,包括它的方法、类型特性等等。

namespace Hunts.Keywords  {      [System.Serializable]      partial class Test      {          void Test1() { }      }      [Conditional("DEBUG")]      partial class Test      {          void Test2() { }      }  }

类相当于:

namespace Hunts.Keywords  {      [System.Serializable]      [Conditional("DEBUG")]      class Test      {          void Test1() { }          void Test2() { }      }

关于部分(类、接口、结构)的详细使用,可以参阅MSDN Library中的部分类。

C#关键字--where

where 子句用于指定类型约束,这些约束可以作为泛型声明中定义的类型参数的变量。

之所以使用类型约束是因为如果要检查泛型列表中的某个项以确定它是否有效,或者将它与其他某个项进行比较,则编译器必须在一定程度上保证它需要调用的运算符或方法将受到客户端代码可能指定的任何类型参数的支持。这种保证是通过对泛型类定义应用一个或多个约束获得的。

// 句法  public class MyGenericClass< T> where T:something

something可以是:结构、类、new()、< 基类名>或< 接口名称>。

可以同时具有1中的多个约束,且约束自身也可以是泛型类型。

也可以将约束作用于泛型方法或委托。

要更深入的了解可以参阅MSDN Library中的"泛型编程"以及"类型参数的约束"这些内容。

示例:

 // keywords_where.cs      using System;   using System.Collections;      struct MyStruct   {       //...   }   interface IMyInterface  {      //...  }   class MyGenericClass< T1,T2>      where T1: IEnumerable, IMyInterface      where T2: MyStruct, new()  {      public void MyMethod(T1 t1, T2 t2)      {          //...      }  }

C#关键字--yield

yield 在迭代器块中用于向枚举数对象提供值或发出迭代结束信号。

// expression 进行计算并以枚举数对象值的形式返回。expression 必须可以隐式转换为迭代器的 yield 类型。  yield return expression;  yield break;

示例:

// keywords_yield.cs  using System;  using System.Collections;   namespace Hunts.Keywords  {      public class Employee      {          private string _name;         private int _id;          public string Name         {             get { return this._name; }             set { this._name = value; }         }          public int ID         {             get { return this._id; }             set { this._id = value; }         }          // 为给定数组中的人名进行编号         public static IEnumerable SetIDs(string[] names)         {             int counter = 0;             Employee result = new Employee();             while (counter++ <  names.Length)             {                 result._id = counter;                 result._name = names[counter - 1];                 yield return result;             }         }     }      class EmployeeList     {         static void Main()         {             string[] names = { "Jones", "Carl", "Dennis", "Evan", "Hugo", "Ivan" };              // 显示编号操作的结果             foreach (Employee e in Employee.SetIDs(names))             {                 Console.WriteLine("ID:{0} Name:{1}", e.ID,e.Name);             }              Console.Read();         }     }

注意:

yield 语句只能出现在 iterator 块中,该块可用作方法、运算符或访问器的体。这类方法、运算符或访问器的体受以下约束的控制:

不允许不安全块。

方法、运算符或访问器的参数不能是 ref 或 out。

yield 语句不能出现在匿名方法中。

当和 expression 一起使用时,yield return 语句不能出现在 catch 块中或含有一个或多个 catch 子句的 try 块中。

以上是"C#中关键字get、set、value、partial、where和yield怎么用"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

方法 属性 类型 索引 关键 关键字 C# 参数 多个 接口 示例 级别 结构 运算符 运算 内容 语句 迭代 元素 同时 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 铜川软件开发市场价 网络安全管理负责人职责 对数据库技术的初步认识 舟山桌面软件开发流程 服务器安全区有钱呢 软考 网络安全工程师高级 sql查看数据库编码 贵阳交易软件开发 高素质人才信息数据库建设方案 阿里承接软件开发 网络安全项目是服务还是工程货物 php加锁插入数据库 服务器管理可以不用宝塔吗 纤原集团软件开发怎么样 服务器不显示管理员账户密码 腾讯云服务器设置声音 湖北大数据软件开发定制费用 数据库系统概论第四版重点 山东通用软件开发定制价格 服务器数据库怎么设置 南宁网络安全特训营白盒测试 初中英语听力软件开发 蒲公英虚拟局域网数据库服务器 cpu做软件开发会吃力吗 数据库中的实体是指 计算机网络技术专业教育背景 苏州驭光网络技术有限公司招聘 网站服务器租用什么公司好 服务器区拓扑 警校有网络安全专业吗
0