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

C# 类的基本概念(从类的内部访问成员和从类的外部访问成员)

本章内容:
类的概述
程序和类:一个简单的示例
声明类
类成员
创建变量和类的实例
为数据分配内存
实例成员
访问修饰符
从类的内部访问成员
从类的外部访问成员
综合应用

从类的内部访问成员

如前所述,类的成员仅用其他类成员的名称就可以访问它们。
例如,下面的类声明展示了类的方法对字段和其他方法的访问。即使字段和两个方法被声明
为private,类的所有成员还是可以被类的任何方法(或任何函数成员)访问。图5-7阐明了这
段代码。

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;//访问私有字段}
}

类内部的成员可以自由地互相访问

从类的外部访问成员

要从类的外部访问实例成员,必须包括变量名称和成员名称,中间用句点(.)分隔。这称
为点运算符(dot-syntax notation),后文会详细讨论。

例如,下面代码的第二行展示了一个从类的外部访问方法的示例:

image

举个例子,下面的代码声明了两个类:DaysTemp和Programo
DaysTemp内的两个字段被声明为public,所以可以从类的外部访问它们。
方法Main是类Program的成员。它创建了一个变量和类DaysTemp的对象,并给对象的字
段赋值。然后它读取字段的值并打印出来。

class DaysTemp  //声明类DaysTemp
{//字段private int High=75;private int Low=45;
}class Program   //声明类Program
{static void Main(){DaysTemp temp=new DaysTemp();// 创建对象 变量名称temptemp.Heigh=85;//变量名称和字段 字段赋值temp.Low=50;Console.WriteLine("High:{0}",temp.High);Console.WriteLine($"Low:{temp.Low}");}
}

输出结果

High:85
Low:60

综合应用

下面的代码创建两个实例并把它们的引用保存在名称为t1和t2的变量中。图5-8阐明了内
存中的t1和t2。这段代码示范了目前为止讨论的使用类的3种行为:

声明一个类;
创建类的实例;
访问类的成员(也就是写人字段和读取字段)。

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=6;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());}
}

输出结果

t1:76,57,66
t2:75,53,64

实例tl和t2的内存布局

因为理解和使用新旧字符串语法都很重要,所以本书会用到这两种语法的示例。虽然新的语
法因为更易读而更可取,但是本书中的示例会时常用到旧的语法,因为现有代码和线上资源中
95%的例子可能用的都是旧语法。除非你的工作是在全新的平台上做的,否则你会经常碰到C#6.0
以前的语法,你最好为此做好准备。

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

相关文章:

  • AXI总线设计高带宽or低带宽?你需要做个选择
  • 大规模克希霍夫积分法叠前深度偏移中,并行化和旅行时表处理
  • 11.模方ModelFun工具-指定置平
  • 【Docker】Docker拉取部分常用中间件
  • 音视频项目在微服务领域的趋势场景题深度解析
  • 为Mac用户定制的云服务器Vultr 保姆级教程
  • 运维打铁: 存储方案全解析
  • 《可信数据空间 技术架构》技术文件正式发布
  • 出现Invalid bound statement (not found)问题的原因可能有哪些
  • 分布式数字身份:迈向Web3.0世界的通行证 | 北京行活动预告
  • IoTDB集群部署中的网络、存储与负载配置优化
  • 研发效率破局之道阅读总结(4)个人效率
  • C#学习笔记 项目引用添加异常
  • C++继承(上)
  • 一、OrcaSlicer源码编译
  • VOIP的信令技术有哪些,区别是什么?
  • 【教学类-102-21】蝴蝶三色图作品3——异型书蝴蝶“满格变形图”一页2图、一页4图
  • ubuntu 部署moodle
  • Java Set<String>:如何高效判断是否包含指定字符串?
  • 私有知识库 Coco AI 实战(六):打造 ES Mapping 小助手
  • 你的项目有‘哇‘点吗?
  • LabelVision - yolo可视化标注工具
  • flutter 专题 五十八 关于Flutter提示Your Xcode project requires migration的错误
  • 神经网络用于地震数据时空均匀插值的方法与开源资料
  • Vue:el-table-tree懒加载数据
  • DeepSeek-Prover-V2-671B最新体验地址:Prover版仅适合解决专业数学证明问题
  • Windows系统编译支持GPU的llama.cpp
  • 蓝桥杯 序列计数
  • 在VTK中使用VTKCamera
  • 2025年4月通信科技领域周报(4.21-4.27):6G标准加速推进 空天地一体化网络进入实测阶段