C# 类&对象

2023-05-16

输入行:

//将从控制台输入的值转换成int类型
int num = int.Parse(Console.ReadLine());

字段:

		private int id;                         //定义私有的整型字段 id
        public readonly string name;            //定义公有的只读字符串类型字段 name
        internal static int age;                //定义内部的静态的整型字段 age
        private const string major = "计算机";  //定义私有的字符串类型常量 major

属性:

//自动属性设置
public int Id{get; set;}
public string Name{get; set;}
public double Price{get; set;}
//如果使用上面的方法来设置属性,则不需要先指定字段。
//如果要使用自动属性的方式来设置属性表示只读属性,直接省略 set 访问器即可。只读属性可以写成如下形式。
public int Id{get;}=1;		//这里相当于将 Id 属性的值设置成 1,并且要以分号结束。
//但是,在使用自动生成属性的方法时不能省略 get 访问器,如果不允许其他类访问属性值,则可以在 get 访问器前面加上访问修饰符 private,代码如下。
public int Id{private get; set;}	//这样,Id 属性的 get 访问器只能在当前类中使用。

类:

		Book book = new Book();
        //为属性赋值
        book.Id = 1;
        book.Name = "计算机基础";
        book.Price = 34.5;
        book.PrintMsg();

lambda表达式:

//lambda表达式
class LambdaClass
{
    public static int Add(int a, int b) => a + b;
}

文章目录

    • 类&对象
      • C#访问修饰符、修饰符
      • C#方法的定义
      • C# get和set访问器:获取和设置字段(属性)的值
      • C#调用类成员
      • C#构造函数(构造方法)
      • C# lambda表达式
      • C# Console类:控制台输入输出
      • C# Math类
      • C# Random类
      • C# DateTime类

类&对象

C#访问修饰符、修饰符

定义类的语法形式

类的访问修饰符    修饰符    类名
{
     类的成员
}
  • 类的访问修饰符:用于设定对类的访问限制,包括 public、internal 或者不写,用 internal 或者不写时代表只能在当前项目中访问类;public 则代表可以在任何项目中访问类。
  • 类的修饰符:修饰符是对类本身特点的描述,包括 abstract、sealed 和 static。abstract 是抽象的意思,使用它修饰符的类不能被实例化;sealed 修饰的类是密封类,不能 被继承;static 修饰的类是静态类,不能被实例化。
  • 类名:类名用于描述类的功能,因此在定义类名时最好是具有实际意义,这样方便用户理解类中描述的内容。在同一个命名空间下类名必须是唯一的。
  • 类的成员:在类中能定义的元素,主要包括字段、属性、方法。

类的访问修饰符主要有两个,即 internal 和 public,如果省略了访问修饰符,即为 internal。
类中成员的访问修饰符有 4 个,具体用法如下

  1. public
    成员可以被任何代码访问。
  2. private
    成员仅能被同一个类中的代码访问,如果在类成员前未使用任何访问修饰 符,则默认为private。
  3. internal
    成员仅能被同一个项目中的代码访问。
  4. protected
    成员只能由类或派生类中的代码访问。派生类是在继承中涉及的,将在后面详细介绍。

定义字段的语法形式:

访问修饰符    修饰符    数据类型    字段名;

字段的定义与前面介绍的变量和常量的定义类似,只是在变量或常量前面可以加上访问修饰符、修饰符。
在修饰字段时通常用两个修饰符,即readonly (只读)和static (静态的)。
使用 readonly 修饰字段意味着只能读取该字段的值而不能给字段赋值。
使用 static 修饰的字段是静态字段,可以直接通过类名访问该字段。
需要注意的是常量不能使用 static 修饰符修饰。
在这里访问修饰符和修饰符都是可以省略的,并且访问修饰符和修饰符的位置也可以互换,但从编码习惯上来说通常将访问修饰符放到修饰符的前面。此外,在类中定义字段时字段名是唯一的。

字段在类中定义完成后,在类加载时,会自动为字段赋值,不同数据类型的字段默认值不同, 如下表所示。

数据类型默认值
整数类型0
浮点型0
字符串类型空值
字符型a
布尔型False
其他引用类型空值

C#方法的定义

定义方法的语法形式:

访问修饰符    修饰符    返回值类型    方法名(参数列表)
 {
     语句块;
 }
  1. 访问修饰符
    所有类成员访问修饰符都可以使用,如果省略访问修饰符,默认是 private。
  2. 修饰符
    在定义方法时修饰符包括 virtual(虚拟的)、abstract(抽象的)、override(重写的)、static(静态的)、sealed(密封的)。override 是在类之间继承时使用的。
  3. 返回值类型
    用于在调用方法后得到返回结果,返回值可以是任意的数据类型,如果指定了返回值类型,必须使用 return 关键字返回一个与之类型匹配的值。如果没有指定返回值类型,必须使用 void 关键字表示没有返回值。
  4. 方法名
    对方法所实现功能的描述。方法名的命名是以 Pascal 命名法为规范的。
  5. 参数列表
    在方法中允许有 0 到多个参数,如果没有指定参数也要保留参数列表的小括号。参数的定义形式是“数据类型参数名”,如果使用多个参数,多个参数之间需要用逗号隔开。

C# get和set访问器:获取和设置字段(属性)的值

属性经常与字段连用,并提供了 get 访问器和 set 访问器,分别用于获取或设置字段的值。
get 访问器和 set 访问器的使用与方法非常类似,可以在操作字段时根据一些规则和条件来设置或获取字段的值。
此外,为了保证字段的安全性,还能选择省去 get 访问器或 set 访问器。

定义属性的语法形式:

public    数据类型    属性名
{
     get
     {
         获取属性的语句块;
         return;
     }
     set
     {
         设置属性得到语句块;
     }
 }

在定义字段属性时,属性的作用就是为字段提供 get、set 访问器

public    数据类型    属性名{get;set;}
  1. get{}
    get 访问器,用于获取属性的值,需要在 get 语句最后使用 return 关键字返回一个与属性数据类型相兼容的值。
    若在属性定义中省略了该访问器,则不能在其他类中获取私有类型的字段值,因此也称为只写属性。

  2. set{}
    set 访问器用于设置字段的值,这里需要使用一个特殊的值 value,它就是给字段赋的值。
    在 set 访问器省略后无法在其他类中给字段赋值,因此也称为只读属性。

C#调用类成员

创建类对象的语法 形式如下。
调用的语法形式如下。

类名对象名 = new 类名();

对象名.类的成员

如果将类中的成员使用修饰符 static 声明,则在访问类成员时直接使用“类名.类成员”的方式即可。
需要注意的是,如果将一个方法声明成静态的,在方法中只能直接访问静态类成员,非静态成员通过类的对象调用才能访问。

class Book
{
    public static int Id { get; set; }
    public static string Name { get; set; }
    public static double Price { get; set; }

    public static void SetBook(int id, string name, double price)
    {
        Id = id;
        Name = name;
        Price = price;
    }
    public static void PrintMsg()
    {
        Console.WriteLine("图书编号:" + Id);
        Console.WriteLine("图书名称:" + Name);
        Console.WriteLine("图书价格:" + Price);
    }
}

//在 Main 方法中调用静态方法的代码如下。
class Program
{
    static void Main(string[] args)
    {
        Book.SetBook(1, "计算机基础", 34.5);
        Book.PrintMsg();
    }
}

C#构造函数(构造方法)

构造方法的定义语法形式如下

访问修饰符  类名 (参数列表)
 {
     语句块;
}

这里构造方法的访问修饰符通常是public类型的,这样在其他类中都可以创建该类的对象。
如果将访问修饰符设置成private类型的,则无法创建该类的对象。构造方法中的参数与其他方法一样,都是 0 到多个参数。
此外,构造方法是在创建类的对象时被调用的。通常会将一些对类中成员初始化的操作放到构造方法中去完成。

C# lambda表达式

具体的语法形式如下。

访问修饰符    修饰符    返回值类型    方法名(参数列表) => 表达式;

这里需要注意的是,如果在方法定义中定义了返回值类型,在表达式中不必使用 return 关键字,只需要计算值即可。
这种形式只能用在方法中只有一条语句的情况下,方便方法的书写。

C# Console类:控制台输入输出

Console 类中常用方法

方法描述
Write向控制台输出内容后不换行
WriteLine向控制台输出内容后换行
Read从控制台上读取一个字符
ReadLine从控制台上读取一行字符

此外,在向控制台中输出内容时也可以对输出的内容进行格式化,格式化时使用的是占位符的方法,语法形式如下。

Console.Write(格式化字符串, 输出项1, 输出项2);

其中,在格式化字符串中使用{索引号}的形式,索引号从 0 开始。输出项 1 填充 {0} 位置的内容,依此类推。

C# Math类

C# Math 类主要用于一些与数学相关的计算,并提供了很多静态方法方便访问,常用的方法如下表所示。

方法描述
Abs取绝对值
Ceiling返回大于或等于指定的双精度浮点数的最小整数值
Floor返回小于或等于指定的双精度浮点数的最大整数值
Equals返回指定的对象实例是否相等
Max返回两个数中较大数的值
Min返回两个数中较小数的值
Sqrt返回指定数字的平方根
Round返回四舍五入后的值

C# Random类

C# Random 类是一个产生伪随机数字的类,它的构造函数有两种。

New Random()New Random(Int32)

前者是根据触发那刻的系统时间做为种子,来产生一个随机数字,后者可以自己设定触发的种子,一般都是用 UnCheck((Int)DateTime.Now.Ticks) 做为参数种子。

Random 类中提供的 Next、NextBytes 以及 NextDouble 方法可以生成整数类型、byte 数组类型以及双精度浮点型的随机数,详细说明如下表所示。

方法描述
Next()每次产生一个不同的随机正整数
Next(int max Value)产生一个比 max Value 小的正整数
Next(int min Value,int max Value)产生一个 minValue~maxValue 的正整数,但不包含 maxValue
NextDouble()产生一个0.0~1.0的浮点数
NextBytes(byte[] buffer)用随机数填充指定字节数的数组

C# DateTime类

C# DateTime 类用于表示时间,所表示的范围是从 0001 年 1 月 1 日 0 点到 9999 年 12 月 31 日 24 点。
在 DateTime 类中提供了静态属性 Now,用于获取当前的日期和时间,如下所示。

DateTime.Now

DateTime 类提供了 12 个构造方法来创建该类的实例,但经常使用不带参数的方法创建 DateTime 类的实例。

在 DateTime 类中提供了常用的属性和方 法用于获取或设置日期和时间,如下表所示。

方法描述
Date获取实例的日期部分
Day获取该实例所表示的日期是一个月的第几天
DayOfWeek获取该实例所表示的日期是一周的星期几
DayOfYear获取该实例所表示的日期是一年的第几天
Add(Timespan value)在指定的日期实例上添加时间间隔值 value
AddDays(double value)在指定的日期实例上添加指定天数 value
AddHours(double value)在指定的日期实例上添加指定的小时数 value
AddMinutes(double value)在指定的日期实例上添加指定的分钟数 value
AddSeconds(double value)在指定的日期实例上添加指定的秒数 value
AddMonths(int value)在指定的日期实例上添加指定的月份 value
AddYears (int value)在指定的日期实例上添加指定的年份 value

两个日期的差可由时间间隔类 TimeSpan 的对象来存放。假设计算现在距离2018年6月1日儿童节的天数,代码如下。

class Program
{
    static void Main(string[] args)
    {
        DateTime dt1 = DateTime.Now;
        DateTime dt2 = new DateTime(2019, 6, 1);
        TimeSpan ts = dt2 - dt1;
        Console.WriteLine("间隔的天数为{0}天", ts.Days);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 类&对象 的相关文章

  • 看中科院大牛博士如何进行文献检索和阅读

    大家可以看看 xff0c 从其他地方看到的 xff01 导读 我是学自然科学的 xff0c 平时确实需要不少外文文献 xff0c 对于自然科学来讲英文文献检索首推Elsevier xff0c Springer等 虽然这些数据库里面文献已经不
  • 面试题32:从上往下打印二叉树

    面试题32 xff08 一 xff09 xff1a 不分行 题目 xff1a 从上往下打印出二叉树的每个结点 xff0c 同一层的结点按照从左到右的顺序打印 代码 span class token macro property span c
  • 面试题33:二叉搜索树的后序遍历序列

    题目 输入一个整数数组 xff0c 判断该数组是不是某二叉搜索树的后序遍历的结果 如果是则返回true xff0c 否则返回false 假设输入的数组的任意两个数字都互不相同 代码 span class token macro proper
  • 面试题34:二叉树中和为某一值的路径

    题目 输入一棵二叉树和一个整数 xff0c 打印出二叉树中结点值的和为输入整数的所有路径 从树的根结点开始往下一直到叶结点所经过的结点形成一条路径 代码 span class token macro property span class
  • 面试题35:复杂链表的复制

    题目 请实现函数ComplexListNode Clone ComplexListNode pHead xff0c 复 制一个复杂链表 在复杂链表中 xff0c 每个结点除了有一个m pNext指针指向下一个结点外 xff0c 还有一个m
  • 面试题36:二叉搜索树与双向链表

    题目 输入一棵二叉搜索树 xff0c 将该二叉搜索树转换成一个排序的双向链表 要求不能创建任何新的结点 xff0c 只能调整树中结点指针的指向 代码 span class token macro property span class to
  • 面试题37:序列化二叉树

    题目 请实现两个函数 xff0c 分别用来序列化和反序列化二叉树 代码 span class token macro property span class token directive keyword include span span
  • 面试题38:字符串的排列

    文章目录 字符串的排列扩展 子集扩展 组合扩展 排列 字符串的排列 题目 输入一个字符串 xff0c 打印出该字符串中字符的所有排列 例如输入字符串abc xff0c 则打印出由字符a b c所能排列出来的所有字符串abc acb bac
  • 面试题39:数组中出现次数超过一半的数字

    题目 数组中有一个数字出现的次数超过数组长度的一半 xff0c 请找出这个数字 例如输入一个长度为9的数组 1 2 3 2 2 2 5 4 2 由于数字2在数组中 出现了5次 xff0c 超过数组长度的一半 xff0c 因此输出2 I O
  • 面试题40:最小的k个数

    题目 输入n个整数 xff0c 找出其中最小的k个数 例如输入4 5 1 6 2 7 3 8这8个数字 xff0c 则最小的4个数字是1 2 3 4 code 方法一 xff1a 时间复杂度为O n 的算法 xff0c 只有当我们可以修改输
  • 面试题41:数据流中的中位数

    题目 如何得到一个数据流中的中位数 xff1f 如果从数据流中读出奇数个数值 xff0c 那么中位数就是所有数值排序之后位于中间的数值 如果从数据流中读出偶数个数值 xff0c 那么中位数就是所有数值排序之后中间两个数的平均值 I O nu
  • 如何由Xubuntu桌面系统还原至Ubuntu系统?

    假定读者原来的系统为ubuntu桌面系统 xff0c 并且根据如下命令更换到xubuntu桌面系统 xff1a sudo apt get install xrdp sudo apt get install vnc4server sudo a
  • 神经网络拟合函数表达式,神经网络拟合函数matlab

    1 matlab中如何用神经网络求得数据拟合函数 xff1f 我是做这个方向的 xff0c 神经网络拟合出的曲线是没有相应的函数的 xff0c 他是根据许多的权重值 xff0c 阀值和偏置值的训练确定的曲线 还有什么相关问题可以问我 xff
  • 面试题42:连续子数组的最大和

    题目 输入一个整型数组 xff0c 数组里有正数也有负数 数组中一个或连续的多个整数组成一个子数组 求所有子数组的和的最大值 要求时间复杂度为O n code 解法一 xff1a 暴力法 span class token macro pro
  • 面试题43:从1到n整数中1出现的次数

    题目 输入一个整数n xff0c 求从1到n这n个整数的十进制表示中1出现的次数 例如 输入12 xff0c 从1到12这些整数中包含1 的数字有1 xff0c 10 xff0c 11和12 xff0c 1一共出现了5次 code span
  • 面试题:数组中找出两个单数

    题目 一个数组中除了两个数是单个的 xff0c 其他的数都有两个 xff0c 请找出这两个单个的数 code span class token macro property span class token directive keywor
  • 面试题44:数字序列中某一位的数字

    题目 数字以0123456789101112131415 的格式序列化到一个字符序列中 在这个序列中 xff0c 第5位 xff08 从0开始计数 xff09 是5 xff0c 第13位是1 xff0c 第19位是4 xff0c 等等 请写
  • mvIMPACT 相机 SDK C++

    Overview 这是为想要使用mvIMPACT Acquire的c 43 43 接口的开发人员编写的文档 它基于C接口 xff0c 但是提供了一种更方便的面向对象的方法来处理设备驱动程序提供的属性和函数 SDK mvIMPACT xff0
  • 面试题:两个链表结构的数据相加,保存到新链表。

    使用STL span class token macro property span class token directive keyword include span span class token string lt iostrea
  • 软件建模基础

    摘录自某PPT 文章目录 软件建模基础0 软件质量属性0 1 如何评价代码质量0 2 软件质量属性 1 面向对象1 0 面向对象知识点1 1 面向对象四大特性1 1 xff08 封装 xff09 1 1 xff08 抽象 xff09 1 1

随机推荐

  • 如何扫描图像,查找表 和 用OpenCV进行时间测量

    英文版原文链接 xff1a How to scan images lookup tables and time measurement with OpenCV 文章目录 目标测试用例图像矩阵如何存储在内存之中 遍历方式一 xff1a 高效的
  • DDD开发

    内容来自某PPT 文章目录 DDD开发1 领域 限定上下文 实体 值对象1 1 领域 子域1 2 核心域 通用域 支撑域1 3 通用语言1 4 限界上下文 xff1a 定义领域边界的利器1 5 实体1 6 值对象1 7 实体 VS 值对象
  • 嵌入式软件开发工程师求职要求

    文章目录 他人感悟工作职责任职要求嵌入式软件开发涉及的知识点很多 xff0c 我仅简单说一下 xff1a 他人感悟 一线工程师告诉你嵌入式真实现状与发展前景 当我们谈论嵌入式时我们究竟在谈什么 工作职责 负责硬件平台bring up xff
  • kolla-ansible openstack登录 证书不可用

    根据官方文档配置kolla ansible之后 xff0c 创建openstack实例 xff0c 登录openstack出现证书不可用 xff0c 如图 问题排查 尝试过 更新openrc sh文件增加OS TOKEN环境变量 查看日志
  • 联发科2021笔试题:字符串中找到 出现次数 最多的单个字符

    I O描述 输入 xff1a span class token string 34 aaaaabbbbbBBBBBAAAAA 34 span 输出 xff1a A span class token punctuation span span
  • 对矩阵的 掩码运算

    英文链接 xff1a Mask operations on matrices 文章目录 测试用例代码基本函数二维滤波器函数 矩阵的掩码操作非常简单 其思想是我们根据掩码矩阵 也称为内核 重新计算图像中每个像素的值 此掩码保存的值将调整相邻像
  • 对图片的操作

    英文原文链接 xff1a Operations with images 文章目录 输入 输出图像的基本操作内存管理和引用计数基本操作可视化图像 输入 输出 从文件加载一个图像 Mat img span class token operato
  • 使用OpenCV相加(混合)两个图像

    使用OpenCV相加 混合 两个图像 xff1a Adding blending two images using OpenCV 文章目录 目标理论源码解释结果 目标 什么是线性混合 xff0c 为什么它有用 如何使用addWeighted
  • 改变图像的对比度和亮度

    英文链接 xff1a Changing the contrast and brightness of an image 文章目录 目标理论图像处理像素处理亮度和对比度调整 源码解释结果实例亮度和对比度调整图像灰度校正 xff08 Gamma
  • 离散傅里叶变换

    英文链接 xff1a Discrete Fourier Transform 目标 什么是傅里叶变换 xff0c 为什么要用它 在OpenCV中怎么做 使用诸如 copyMakeBorder merge dft getOptimalDFTSi
  • 使用XML和YAML文件的 文件输入和输出

    英文链接 xff1a File Input and Output using XML and YAML files 文章目录 目标源码解释结果 目标 如何打印和读取文本条目到文件 和 OpenCV使用YAML或XML文件 如何为OpenCV
  • 如何使用OpenCV的parallel_for_并行化你的代码

    英文链接 xff1a How to use the OpenCV parallel for to parallelize your code 文章目录 目的先决条件简单的示例 绘制曼德尔布罗特集 xff08 Mandelbrot set x
  • 摇杆滑块机构运动模型

    clc span class token punctuation span close all span class token punctuation span r1为杆1的长度 xff0c r2为杆2的长度 xff0c d为偏置距离 r
  • 广义逆矩阵A+:行列满秩法和奇异值分解法

    奇异值的物理意义是什么 xff1f 广义逆矩阵A 43 SVD 矩阵奇异值分解 原理与几何意义 SVD xff08 奇异值分解 xff09 小结 超定方程 最小二乘解 奇异值分解 xff08 SVD xff09 A span class t
  • MQ-2烟雾浓度传感器

    文章目录 一 模块简介二 工作原理三 程序设计 本实验将采集到的传感器数据利用ADC转换 xff0c 将转换后的电压值显示在串口调试助手上 一 模块简介 MQ 2烟雾传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡 SnO2 当烟雾
  • git基础操作

    在 Windows 系统中可以安装 Git for Windows 客户端 xff1a span class token string 39 把当前所在目录变成一个本地仓库 39 span span class token function
  • git分支操作

    span class token string 39 每次提交都要手动输入用户名和密码 xff0c 若想避免这些麻烦 xff0c 可以在系统中创建 SSH 公私钥 xff0c 并将公钥放到 GitHub 指定位置 如此操作即可生成 GitH
  • shape_match

    使用OpenCV的dnn模块实时目标检测 非极大值抑制 xff08 Non Maximum Suppression xff0c NMS xff09 NMS 非极大值抑制 span class token comment test cpp s
  • C#基础语法

    Console span class token punctuation span span class token function Write span span class token punctuation span span cl
  • C# 类&对象

    输入行 xff1a span class token comment 将从控制台输入的值转换成int类型 span span class token keyword int span num span class token operato