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),后文会详细讨论。

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

举个例子,下面的代码声明了两个类: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();// 创建对象 变量名称temp

        temp.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

因为理解和使用新旧字符串语法都很重要,所以本书会用到这两种语法的示例。虽然新的语

法因为更易读而更可取,但是本书中的示例会时常用到旧的语法,因为现有代码和线上资源中

95%的例子可能用的都是旧语法。除非你的工作是在全新的平台上做的,否则你会经常碰到C#6.0

以前的语法,你最好为此做好准备。

相关推荐
艾斯比的日常几秒前
Neo4j 完全指南:从核心特性到 Java 实战(附企业级应用场景)
java·开发语言·neo4j
K***43061 分钟前
三大框架-Spring
java·spring·rpc
I***26152 分钟前
智能生成ER图工具。使用 SQL 生成 ER 图:让数据库设计更高效
数据库·sql·oracle
极限实验室5 分钟前
INFINI Labs 产品更新 - Coco AI v0.9 与 Easysearch v2.0 全新功能上线,全面支持 GitLab 合并请求(MR)自动
数据库·人工智能·产品
唐青枫8 分钟前
C#.NET 范围与索引(Range、Index)完全解析:语法、用法与最佳实践
c#·.net
20岁30年经验的码农10 分钟前
MongoDB NoSQL 数据库实践文档
数据库·mongodb·nosql
后端小张10 分钟前
【JAVA 进阶】深入探秘Netty之Reactor模型:从理论到实战
java·开发语言·网络·spring boot·spring·reactor·netty
i***11861 小时前
【Sql Server】随机查询一条表记录,并重重温回顾下存储过程的封装和使用
数据库·oracle
我命由我123452 小时前
Java NIO 编程 - NIO Echo Server、NIO Client(NIO 异步客户端、NIO Selector 异步客户端)
java·开发语言·网络·java-ee·intellij-idea·intellij idea·nio
嗯、.2 小时前
使用Itext9生成PDF水印,兼容不同生成引擎的坐标系(如: Skia、OpenPDF)
java·pdf·itextpdf·openpdf·坐标变换矩阵