当前位置: 首页 > news >正文

C# 类成员的访问:内部与外部

在 C# 编程中,了解如何从类的内部和外部访问成员是非常重要的。本文将详细介绍这两种访问方式,并通过示例代码展示其具体应用。

从类的内部访问成员

类的成员可以在类的内部自由地互相访问,即使这些成员被声明为private。在类的方法中,可以直接使用其他成员的名称来访问它们。

以下是一个示例代码:

class DaysTemp 
{ // 字段 private int High = 75; private int Low = 45; // 方法 private int GetHigh() { return High; // 访问私有字段 } private int GetLow() { return Low; // 访问私有字段 } public float Average() { // 访问私有方法 return (GetHigh() + GetLow()) / 2; // 访问私有字段 } 
} 

在这个示例中,GetHigh和GetLow方法分别访问了私有字段High和Low,而Average方法则调用了这两个私有方法来计算平均值。

从类的外部访问成员

要从类的外部访问实例成员,必须使用点运算符(.),将变量名称和成员名称分隔开来。这种访问方式要求成员必须是public的。

以下是一个示例代码:

class DaysTemp 
{ // 字段 public int High; public int Low; 
} class Program 
{ static void Main() { DaysTemp temp = new DaysTemp(); // 创建对象,变量名称 temp temp.High = 85; // 给字段赋值 temp.Low = 50; Console.WriteLine("High:{0}", temp.High); Console.WriteLine($"Low:{temp.Low}"); } 
} 

在这个示例中,Main方法创建了一个DaysTemp类的对象temp,并通过点运算符访问了对象的High和Low字段。

综合应用

下面的代码展示了如何声明一个类、创建类的实例以及访问类的成员:

class DaysTemp 
{ public int High, Low; // 声明实例字段 public int Average() // 声明实例方法 { return (High + Low) / 2; } 
} class Program 
{ static void Main() { // 创建两个 DaysTemp 实例 DaysTemp t1 = new DaysTemp(); DaysTemp t2 = new DaysTemp(); // 给字段赋值 t1.High = 76; t1.Low = 57; t2.High = 75; t2.Low = 53; // 读取字段值,调用实例的方法 Console.WriteLine("t1:{0},{1},{2}", t1.High, t1.Low, t1.Average()); Console.WriteLine("t2:{0},{1},{2}", t2.High, t2.Low, t2.Average()); } 
} 

在这个示例中,Main方法创建了两个DaysTemp类的实例t1和t2,并分别给它们的字段赋值。然后,通过点运算符访问了字段的值,并调用了Average方法来计算平均值。

新旧字符串语法

在本文的示例代码中,我们使用了新旧两种字符串语法。新的字符串语法(如$“Low:{temp.Low}”)更易读,但现有代码和线上资源中大部分仍然使用旧的语法(如"High:{0}", temp.High)。因此,理解和使用这两种语法都是很重要的。

通过本文的介绍,你应该对 C# 中类成员的内部和外部访问方式有了更深入的了解。在实际编程中,根据需要合理地使用这些访问方式,可以提高代码的安全性和可维护性。

http://www.xdnf.cn/news/224731.html

相关文章:

  • 练习001
  • Java进阶--设计模式
  • 汽车OTA在线升级法规分析
  • 搭建基于 ChatGPT 的问答系统
  • Linux Quota 显示空间占用远大于实际数据的问题排查记录
  • Java写数据结构:队列
  • 基于大模型的膀胱肿瘤全周期诊疗方案研究报告
  • 【KWDB 创作者计划】_KWDB能帮我的项目解决什么问题
  • Golang - 实现文件管理服务器
  • scGPT方法解读
  • 突发-2小时前DeepSeek发布了新模型-不是R2
  • 中小企业如何借助智能海关系统降低跨境运输成本?
  • day006-实战练习题-参考答案
  • 基于 IAR Embedded Workbench 的自研 MCU 芯片软件函数与变量内存布局优化精控方法
  • LeetCode 2905 找出满足差值条件的下标II 题解
  • AI驱动的决策智能系统(AIDP)和自然语言交互式分析
  • ArcGIS+GPT:多领域地理分析与决策新方案
  • 第十一节:Shell脚本编程
  • 软件架构选型之“如何选”
  • Walrus 与 Pudgy Penguins 达成合作,为 Web3 头部 IP 引入去中心化存储
  • 米壳AI:跨境电商图片翻译的“隐形革命”:当AI技术遇上全球化生意
  • Azure Monitor 实战指南:全方位监控应用与基础设施
  • 零基础学指针2
  • 蓝桥杯赛后总结
  • Transformer:颠覆深度学习的架构革命与技术演进
  • HTTP/HTTPS
  • shell(5)
  • 2025年真实面试问题汇总(一)
  • MCP协议:自然语言与结构化数据的双向桥梁 ——基于JSON-RPC 2.0的标准化实践
  • 备战2025年全国信息素养大赛图形化挑战赛——判断闰年和平年