C#基础——类、对象和属性

C# 属于 面向对象 的编程,“万物皆对象”

面向对象编程的三大特性:封装、继承、多态。

通过类能过较好的体现该语言的特点

类:是具有相同属性和行为特征的集合

类的语法格式:
访问修饰符 class关键字 类名

两种创建类的方式
第一种方式就是在类的下面再创建一个类
第二种方式是在文件中添加一个类

第一种创建类的方法,在 internal class Program{} 类的下面创建

  // 创建一个汽车类
  public class Car {}

第二种创建类的方法

右击当前项目文件 —> 选择添加 —> 添加一个类名
选择 类 —> 输入类名 —> 添加

在这里插入图片描述
在这里插入图片描述

类中的成员

类中的成员包含: 1.字段、2.属性、3.方法 还应该为每个类成员设置指定的访问修饰符
类中的成员访问修饰符主要有4个:
public:成员可以被任何代码访问
private:只能在当前类种访问(默认的)
nternal:一个项目种的代码可以访问
protected:成员自己或者是派生类能够访问

// 定义类中的成员变量
  // 成员变量属于全局变量,当前类种都可以通用,全局变量本质上属于私有变量
  private int b;
  // 定义一个公有字段
  public int c;
  // 定义公有静态成员变量
  public static int d; //默认值是0
  public static string f; //默认值是null
  public static int[] Arr; //默认值是null
  // 如果是静态的数组,那么一定要初始化,因为不属于某个对象,而是属于当前类
  public static string[] stringArr = new string[3];
  // 如果在类中实现了函数,那么这个函数就叫做该类的方法
  public void PenpleMethod1() {
    // a属于局部变量,作用域是当前方法,超出这个范围就无法访问到了
    int a = 1;
    //方法内部可以访问外部的全局变量
    b = 20;
    Console.WriteLine(a);
    Console.WriteLine(b);
  }
  //除了上述的变量类型以外,也可以把类,当作数据类型
  //注意:如果属性是引用类型,那么一定要在使用的时候进行实例化(重新new一个新的对象)
  public Car car;
  public string myName;

  //方法的传参参数也可以定义为引用类型
  public bool getCar(Car aCar) {
    //aCar代表的是Car类型的对象
    if (aCar.carName == "保时捷") {
      return true;
    } else {
      return false;
    }
  }

类的调用

// 使用类名调用类当前中的static修饰的变量
People.f = "100";
People.stringArr[0] = "测试";
Console.WriteLine(People.stringArr[0]); //测试

// 如果没有static修饰的变量,则代表属于实例对象调用的变量,
// 需要先创建该类对于的实例对象
// 类名 对象名 = new 构造函数();
People p1 = new People();
// 注意:对象可以创建多个,一个对象代表一个当前类的实例(会占用一块内存)
// c在这里面就叫做p1这个对象的属性
p1.c = 666; //赋值
Console.WriteLine(p1.c); //666  取值
p1.PenpleMethod1(); //打点 . 调用对象的方法

使用类中的对象属性

//new 代表分配一块内存
People p2 = new People();
//使用类中的对象属性
p2.car = new Car();
p2.car.carName = "保时捷";
p2.car.carColor = "白色";
p2.myName = "郭贝贝同学";
Console.WriteLine("myName is:{0},正在驾驶一辆{1}的{2}全速前进",p2.myName, p2.car.carColor, p2.car.carName);

属性

属性(Properties)是一种用于封装类成员的特殊成员。属性可以通过使用get和set访问器来实现对私有字段的读取和写入操作,从而提供对类的数据的安全访问。

public class Person
{
    private string name;
    private int age;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }

    public int Age
    {
        get { return age; }
        set { age = value; }
    }
}

public class Program
{
    static void Main(string[] args)
    {
        Person person = new Person();
        person.Name = "John";
        person.Age = 25;

        Console.WriteLine("Name: " + person.Name);
        Console.WriteLine("Age: " + person.Age);
    }
}

在定义属性的时候,可以通过不同的属性描述关键字,定义属性的使用要求

//const 表示常量,本质上也是静态变量,不能跟static写在一起,定义之后不能修改
public const string tempStr1 = "abc";
//readonly 可以在定义的时候赋值,表示只读
public readonly string tempStr2 = "123";
//static 静态的,可以读写
public static string tempStr3;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/248015.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Visual Studio编辑器中C4996 ‘scanf‘: This function or variable may be unsafe.问题解决方案

目录 ​编辑 题目:简单的ab 1. 题目描述 2. 输入格式 3. 输出格式 4. 样例输入 5. 样例输出 6. 解题思路 7. 代码示例 8. 报错解决 方案一 方案二 方案三 方案四 总结 题目:简单的ab 1. 题目描述 输入两个整数a和b,…

12.15

写这段代码改了好几个小时,从有这个想法到完成花费了比较久的时间,也很有成就感。速成课给的伪代码思路漏掉了需要判断最小数是否正好是这个数本身这个条件,所以一直报错。所以写代码要把每种可能性都涵盖,不然程序就会出问题。之…

DVGO 代码阅读

BBx 的大小范围是 根据 相机的 位姿来构建的,会刚好 Cover 相机的移动范围,相当于 StreetSurf 里面的 close-range 的部分,代码在compute_bbox_by_cam_frustrm_unbounded 这个函数里面: xyz_min, xyz_max _compute_bbox_by_cam_f…

springcloud项目实战之自定义负载均衡器

系列文章 。 写在前面 本部分看下如何自定义负载均衡器从而满足业务对于负载均衡特定的需求。 源码 。 1:负载均衡的知识点 1.1:什么是负载均衡? 多台服务器随机的选择一台处理请求的技术,叫做负载均衡自己总结的&#xff0c…

jstat虚拟机统计信息监控工具

jstat虚拟机统计信息监控工具 1、jstat(JVM Statistics Monitorning Tool) 用于监控虚拟机各种运行状态信息的命令行工具。 它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,它是运行期定位虚拟机 性能问题…

VRRP协议详解

目录 一、基础概念 1、概念 2、VRRP的基本结构 状态机 二、VRRP主备备份工作过程 1、备份工作过程 2、VRRP的负载分担工作 三、实验 一、基础概念 1、概念 VRRP能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的I…

StarCCM+ 导入STL几何模型进行仿真

使用 StarCCM 进行仿真时,通常都是用 3D-CAD Model 导入 CAD 类型的几何模型。但对于一些特殊情况,例如通过三维重建等方法获得的几何模型是 STL 文件而非 CAD 文件,这种情况下可以通过 Import Surface Mesh 的方法导入 STL 文件进行仿真&…

浮在文字上面的下划线的设置css

话不多说直接贴代码 前5行css就是实现的代码: p {text-decoration-line: underline;text-underline-offset: -7.5px;text-decoration-thickness: 5px;text-underline-position: under;text-decoration-color: #FFF200;color: #666;font-size: 20px;line-height: 2…

【源码系列】外卖系统外卖平台外卖软件开发外卖小程序APP

系统概念 外卖系统是一套类似美团和饿了么的外卖送餐解决方案,可以在PC、H5、APP、小程序、微信等全平台进行操作。系统配备用户端、商户端、配送端、管理端,可供消费者、商家、骑手,平台多角色使用。同时提供调度中心、分站管理等增值功能。…

openoffice安装

安装openoffice 下载安装包 建议去官网下载,这里给出官网地址:https://www.openoffice.org/download/ 这里以linux为例,所以我下载的是unbantu的版本(deb) 解压安装包 tar -zxvf Apache_OpenOffice_4.1.13_Linux_x86-64_install-deb_zh-…

【lesson15】MySQL表基本查询 (retrieve(2))

文章目录 表的基本操作介绍retrieve结果排序建表基本测试 筛选分页结果建表测试 表的基本操作介绍 CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除) retrieve 结果排序 建表 建表这里就不建了,因为…

【期末复习向】n元gram的应用

当 n 1 时, 即出现 在 第 i 位 上 的基 元 w i 独 立于 历 史 。 一元文法也 被 写 为 uni-gram 或 monogram; 当 n 2 时 , 2-gram ( bi-gram ) 被称 为 1 阶 马 尔 可夫 链; 当 n 3 时 , 3-gram( tri-gram ) 被称为 2 阶马尔 可 夫 链 &am…

上门回收小程序开发,让环保发展成收益

如今资源回收,保护环境已成为全球人民共同追求的目标,人们的环保意识也逐渐提高,回收行业受到了大众的关注。 在移动互联网的发展下,传统回收行业也逐渐向线上智能化转型,线上上门回收小程序也逐渐出现在了大众生活中…

C语言的system函数简介

函数原型 包含在头文件 “stdlib.h” 中 int system(const char * command) 函数功能 执行 dos(windows系统) 或 shell(Linux/Unix系统) 命令,参数字符串command为命令名。另,在windows系统下参数字符串不区分大小写。 说明:在windows系统中&…

基于ssm服装定制系统源码和论文

idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 环境: jdk8 tomcat8.5 开发技术 ssm 基于ssm服装定制系统源码和论文751 1.1项目研究的背景 困扰管理层的许多问题当中,服装定制将是广大用户们不可忽视的一块。但是管理好服装定制又面临很多麻…

VINS-MONO代码解读6----pose_graph

开始pose_graph部分,本部分记住一句话无论是快速重定位还是正常重定位,求出 T w 1 w 2 T_{w_1w_2} Tw1​w2​​就是终极目标。 还剩一个整体Pipeline~~ 1. pose_graph_node.cpp 注意,定义全局变量时即实例化了一个对象 PoseGraph posegra…

26种主流的神经网络偏微分方程求解方法汇总

偏微分方程(PDE)是数学中一门重要的分支,应用范围广泛涉及自然科学、工程技术、生物学领域等。然而我们都知道,偏微分方程的求解过程异常艰难,如果碰上了特别复杂的,传统的计算方法可能需要数百万个CPU小时…

[多线程]一篇文章带你看懂Java中的synchronized关键字(线程安全)锁的深入理解

目录 1.前言 2.synchronized的特性 2.1synchronized前言 2.2乐观锁和悲观锁 2.3重量级锁和轻量级锁 重量级锁 : 轻量级锁: 2.4自旋锁和挂起等待锁 2.5 公平锁和非公平锁 公平锁: 非公平锁: 2.6可重入锁和不可重入锁 可…

bat 脚本的常用特殊符号

1、 命令行回显屏蔽符 2、% 批处理变量引导符 3、> 重定向符 4、>> 重定向符 5、<、>&、<& 重定向符 6、| 命令管道符 7、^ 转义字符 8、& 组合命令 9、&& 组合命令 10、|| 组合命令 11、"" 字符串界定符 12、, 逗号…

报错“找不到mfc100u.dll,程序无法继续执行”的解决方法,完美解决

在软件操作过程中&#xff0c;部分用户可能遇到"计算机缺失mfc140u.dll导致无法启动程序"的困扰。这种情况常常发生在启动某特定应用&#xff0c;特别是需要VC Redistributable支持的软件时。以下为详尽解决策略&#xff0c;让用户轻松应对这类技术难题&#xff0c;重…
最新文章