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

news2024/9/25 13:14:22

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

对象:对象是类的实例化,它具有类定义的所有特征和行为。

类的语法格式:
访问修饰符 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.coloradmin.cn/o/1315121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Selenium自动化(上)

Selenium 安装 环境准备 第一种方式 Python 自带的 pip 工具安装。 pip install selenium4.12.0安装完成后,查看安装的 Selenium 版本号。 pip show selenium第二种方式 安装 Selenium 的前提是拥有 Python 开发环境(推荐使用 PyCharm)。…

【运维】Kafka高可用: KRaft(不依赖zookeeper)集群搭建

文章目录 一. kafka kraft 集群介绍1. KRaft架构2. Controller 服务器3. Process Roles4. Quorum Voters5. kraft的工作原理 ing 二. 集群安装1. 安装1.1. 配置1.2. 格式化 2. 启动测试2.1. 启功节点服务2.2. 测试 本文主要介绍了 kafka raft集群架构: 与旧架构的不…

linux(centos7)离线安装mysql-5.7.35-1.el7.x86_64.rpm-bundle.tar

1. 卸载mariadb相关rpm # 查找 rpm -qa|grep mariadb rpm -qa|grep mysql# 卸载 rpm -e --nodeps mariadb... rpm -e --nodeps mysql...2. 删除mysql相关文件 # 查找 find / -name mysql# 删除 rm -rf /var/lib/mysql...3. 查看是否有相关依赖,没有需安装 rpm -q…

联想王传东:AI PC迈入AI Ready 即将开启AI On

“AI PC已经正式迈入AI Ready 阶段,接下来会逐渐进入到AI On阶段。”12月16日,英特尔人工智能创新应用大赛启动仪式在深圳举办。作为独家AI PC合作伙伴,联想集团副总裁、中国区首席市场官王传东代表公司出席仪式并致辞。 王传东认为AI PC的发…

云渲染视频多少钱呢?视频云渲染哪个平台好?

对于想要渲染高质量视频或动画电影的人来说,使用个人电脑来完成这样的任务往往是一个耗时且效率低下的过程,可能需要耗费数日甚至数周的时间。幸运的是,我们可以将这一任务外包至云渲染平台,它们拥有强大的计算资源,可…

BIM 技术:角色漫游

本心、输入输出、结果 文章目录 BIM 技术:角色漫游前言BIM角色漫游中,用户如何与建筑模型进行交互手势识别技术在BIM角色漫游中的应用有哪些图示花有重开日,人无再少年实践是检验真理的唯一标准 BIM 技术:角色漫游 编辑&#xff1…

TensortRT:sample.py:DeprecationWarning:

错误描述 sample.py:112: DeprecationWarning: Use set_memory_pool_limit instead. config.max_workspace_size common.GiB(1) sample.py:75: DeprecationWarning: Use add_convolution_nd instead. conv1 network.add_convolution( sample.py:78: DeprecationWarning: Use…

【C++11特性篇】C++11中新增的initializer_list——初始化的小利器

前言 大家好吖,欢迎来到 YY 滴C11系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.探究std::initializer_list是什么…

HI3559AV100和FPGA 7K690T的PCIE接口调试记录

1、基本情况 HI3559AV100和690t之间使用pcie2.0 x2接口连接,3559作为RC端,690T作为EP端,驱动使用XDMA。系统主要功能是FPGA采集srio接口过来的图像数据,再通过pcie把数据传递给3559,3559再实现图像数据的存储、AI处理、…

深度学习 动态交叉验证v1.0

# 执行特征工程(交叉验证) def perform_feature_engineering(df, features):# 根据 features 中的内容选择特征生成函数if typical_ma in features:df calculate_typical_ma(df, window10)if RSI in features:df calculate_rsi(df, column_nameClose, …

【C++11特性篇】利用 { } 初始化(1)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! 目录 一.回顾C98标准中{}的使用二.一切皆可用…

新钛云服助力爱达邮轮·魔都号首航,保驾护航,共创辉煌

随着2024年1月1日的临近,中国首艘国产大型邮轮——爱达邮轮魔都号即将迎来激动人心的首航时刻。作为爱达邮轮的IT系统运维和安全服务伙伴,新钛云服有幸提前登船体验,并为魔都号即将到来的航行提供全面的技术支持与保障。 爱达魔都号&#xff…

代驾系统开发:驶向未来的智能交通服务

随着科技的迅速发展,代驾系统的开发成为改善出行体验和提升交通服务智能化的重要一环。本文将聚焦于代驾系统开发的技术创新,为读者呈现其中涉及的一些令人振奋的技术代码。 1. 区块链技术的运用: 区块链技术被引入代驾系统,可…

网站监控/定时任务/网站网址URL状态监控神器

源码介绍: 这是一款在线监控网址的源码,对于有多个网站的站长来说还是非常有用的。也可以做为一项收费服务对外提供。这个程序没啥问题,就是UI有点简单,不影响使用。 网站监控/定时任务/网站网址URL状态监控神器,可以…

MFC逆向之CrackMe Level3 过反调试 + 写注册机

今天我来分享一下,过反调试的方法以及使用IDA还原代码 写注册机的过程 由于内容太多,我准备分为两个帖子写,这个帖子主要是写IDA还原代码,下一个帖子是写反调试的分析以及过反调试和异常 这个CrackMe Level3是一个朋友发我的,我也不知道他在哪里弄的,我感觉挺好玩的,对反调试…

Spark RDD、DataFrame、DataSet比较

在Spark的学习当中,RDD、DataFrame、DataSet可以说都是需要着重理解的专业名词概念。尤其是在涉及到数据结构的部分,理解清楚这三者的共性与区别,非常有必要。 RDD,作为Spark的核心数据抽象,是Spark当中不可或缺的存在…

【华为数据之道学习笔记】5-4 数据入湖方式

数据入湖遵循华为信息架构,以逻辑数据实体为粒度入湖,逻辑数据实体在首次入湖时应该考虑信息的完整性。原则上,一个逻辑数据实体的所有属性应该一次性进湖,避免一个逻辑实体多次入湖,增加入湖工作量。 数据入湖的方式…

Codeforces Round 914 (Div. 2) A~E

A.Forked!(思维) 题意: 给出骑士的跳跃能力 ( x , y ) (x, y) (x,y) 以及国王和皇后的位置,问有多少个位置可以让骑士可以直接攻击到国王和皇后。 分析: 棋盘非常大 ( 1 0 8 1 0 8 ) (10^{8} \times 10^{8}) (1…

基于ssm物流管理系统论文

摘 要 本物流管理系统设计目标是实现物流的信息化管理,提高管理效率,使得物流管理作规范化、科学化、高效化。 本文重点阐述了物流管理系统的开发过程,以实际运用为开发背景,基于SSM框架,运用了Java编程语言和MYSQL数…

C++:命名空间

从今天正式开始对C的学习&#xff0c;这里只学习C对C的拓展&#xff0c;和C相同的部分在C语言专栏中都可以找到&#xff0c;我们先看一段C代码 #include<iostream> using namespace std; int main() {cout<<"hello world<<endl;return 0; } 同样也是打…