C# 面向对象编程(一)——类 第一篇

总目录
C# 语法总目录

系列链接
C# 面向对象编程(一)     类 第一篇
C# 面向对象编程(一)     类 第二篇
C# 面向对象编程(一)     类 第三篇

C# 面向对象编程 一 ——类 第一篇

    • 简介
    • 面向对象编程
      • 访问权限修饰符
      • 类 第一篇
        • 1. 字段
        • 2. 属性
        • 3. 构造器

简介

  主要记录的是面向对象编程中,类的字段,属性,构造器的使用,注意事项

面向对象编程

访问权限修饰符

  • public :完全访问权限
  • internal:仅可以才程序集内访问,或友元函数访问
  • private:仅可以在包含类型中访问
  • protected:仅可以在包含类型或子类中访问
  • protected internal:protected 和 internal 可访问性的并集

程序集 : 就是一次打包的集合,包含多个资源文件

添加程序集特性,才能让其他友元程序集访问

[assembly:InternalsVisibleTo("Friend")]
//如果友元程序集有强名称,必须指定完整的160字节公钥
[assembly:InternalsVisibleTo("StrongFriend,PublicKey=xxx....")]
//这里的公钥是打包的时候设置的,在vs中也可以点击右键项目,在属性中设置

类 第一篇

  • 类的修饰符

  有 public ,internal , abstract ,sealed , static , unsafe , partial,默认是internal

  • 类名后缀

可以添加泛型参数、唯一基类、实现多个接口

//public 为修饰符
public class MyClass{
    
}
  • 类成员

  有 字段 ,属性,构造器,解构器, 方法,事件,索引器,终结器 ,重载运算符

1. 字段

字段可以用以下修饰符进行修饰

  • 静态修饰符:static
  • 访问修饰符:public,internal,private,protected
  • 继承修饰符:new
  • 不安全代码修饰符:unsafe
  • 只读修饰符:readonly 只能在声明时或类构造器中赋值,其他地方无法更改
  • 线程访问修饰符:volatile
internal class Person
{
    private readonly string name="xiaoli";
    private int age = 18;

    public Person()
    {
        name = "zhangwei";
        age = 20;
    }


    public override string ToString()
    {
        //this.name = "zhangsan";       //无法修改 readonly
        return this.name+","+this.age;
    }
}
2. 属性

通常属性是公有,字段是私有

属性可以用以下修饰符:

  • 静态修饰符:static
  • 访问权限修饰符:public ,internal , private , protected
  • 继承修饰符: new , virtual ,abstract ,override ,sealed
  • 非托管代码修饰符:unsafe , extern
//1.基本用法
internal class Person
{
    //属性初始化
    public string Name { get; set; } = "xiaoli";
    public int Age { get; set; } = 18;


    public override string ToString()
    {
        return this.Name+","+this.Age;
    }
}
static void Main(string[] args)
{
    Person p = new Person();
    p.Age = 18;
    p.Name = "zhangwei";
    Console.WriteLine(p.ToString()); 
    Console.ReadLine();
}
//输出
xiaoli,18

//2.属性搭配字段使用
internal class Person
{
    private string name;
    private int age;

    public string Name { get => name; set => name = value; }
    public int Age { get => age; set => age = value; }

    public override string ToString()
    {
        return this.Name+","+this.Age;
    }
}
static void Main(string[] args)
{
    Person p = new Person();
    p.Age = 18;
    p.Name = "zhangwei";
    Console.WriteLine(p.ToString()); 
    Console.ReadLine();
}
//输出
zhangwei,18
    
//给属性 set 添加私有访问修饰符
internal class Person
{
    private string name;
    private int age;

    public string Name { get => name; set => name = value; }
    public int Age { get => age; private set => age = value; }

    public override string ToString()
    {
        this.Age = 20;
        return this.Name+","+this.Age;
    }
}
static void Main(string[] args)
{
    Person p = new Person();
    p.Name = "zhangwei";
    Console.WriteLine(p.ToString()); 
    Console.ReadLine();
}
//输出
zhangwei,20
3. 构造器

  隐式无参构造器:默认有一个无参构造器,但是如果显示写一个有参或无参构造器,则该无参构造器自动消失,必须手动添加一个无参构造器。默认无参构造器中的字段值为默认类型值或者是字段声明时的初始化值。

internal class Person
{
    //这里的 ? 是指这个字段可以为 null
    private string? name;
    private int age;
    //无参构造器
    public Person()
    {
        name = "zhang";
        age = 18;
    }
	//有参构造器
    public Person(string? name,int age)
    {
        this.name = name;
        this.age = age;
    }

    public string? Name { get => name; set => name = value; }
    public int Age { get => age; set => age = value; }

    public override string ToString()
    {
        return this.name+","+this.age;
    }
}
static void Main(string[] args)
{
    Person p = new Person("xiaoli",20);
    Person p1 = new Person();
    Console.WriteLine(p.ToString()); 
    Console.WriteLine(p1.ToString()); 
    Console.ReadLine();
}
//输出
xiaoli,20
zhang,18

总目录
C# 语法总目录

系列链接
C# 面向对象编程(一)     类 第一篇
C# 面向对象编程(一)     类 第二篇
C# 面向对象编程(一)     类 第三篇

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

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

相关文章

BlueNRG-X 原理图参数说明

1. 前言 为了让客户在原理图设计阶段少走弯路,我这里结合客户评估和设计阶段常遇到的问题,整理了一下 BlueNRG-1/-2 相关设计及注意事项以备客户解惑用。 2. BlueNRG-1/-2 的原理图参数说明及设计注意事项 2.1. BlueNRG-1/-2 原理图及参数如下&#x…

NFTScan | 04.08~04.14 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期:2024.04.08~ 2024.04.14 NFT Hot News 01/ 数据:Runestone 地板价突破 0.07 BTC,创历史新高 4 月 8 日,据数据显示,Runestone 地板价突破 …

【第七届openGauss技术文章征集】 openGauss新版本征文活动来啦!

活动背景 2024年3月30日,openGauss 6.0.0版本正式上线,该版本与之前版本特性功能保持兼容,在内核能力、DataPod三层资源池化架构、DataKit数据全生命周期管理平台、生态兼容性等方面全面增强。(下方【点击原文】即可查看更多【新…

Android--ConnectivityManager使用

一、前言 Android10之后官方废弃了通过WifiManager连接WIFI的方式,现在要使用ConnectivityManager连接WIFI 二、连接WIFI public class MainActivity extends AppCompatActivity {private static final String TAG"lkx";Overrideprotected void onCrea…

【黑马头条】-day10热点文章定时计算-xxl-job

文章目录 1 今日内容1.1 需求分析1.2 解决方案1.3 定时计算1.4 定时任务方案对比 2 分布式任务调度3 xxl-job3.1 简介3.2 环境搭建3.2.1 配置maven3.2.2 源码说明 3.3 配置部署调度中心3.3.1 运行sql脚本3.3.2 修改配置application.properties3.3.3 启动引导类 3.4 docker配置x…

✌粤嵌—2024/4/18—旋转链表✌

代码实现: 方法一:在原链表中找到旋转之后的首尾,改变指向 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* rotateRight(struct ListNode *head, int k) {i…

电脑怎么创建加密磁盘?方法很简单!

在电脑中创建加密磁盘,可以有效地保护电脑数据,避免数据泄露。那么,电脑怎么创建加密磁盘呢?下面我们就一起来了解一下吧。 密盘创建方法 创建密盘建议使用超级秘密磁盘3000,软件界面简约,操作简单&#x…

秋招复习笔记——八股文部分:网络HTTP

常见面试题 基本概念 HTTP 是超文本传输协议,也就是HyperText Transfer Protocol。HTTP 协议是一个双向协议,是一个在计算机世界里专门用来在两点之间传输数据的约定和规范。是超越了普通文本的文本,它是文字、图片、视频等的混合体,最关键…

资源管理规范

踩坑经验: 对于IO及池化资源(文件、线程池、网络IO(HttpClient)、磁盘IO),使用之后一定要及时回收,好借好还,再借不难。 稳定关闭方式 完成I/O操作后,应该关闭流以释放系统资源。可以使用finally块确保流被关闭&#…

学生故事|勇于创新,拒绝“一成不变”的设计

对于JIANG MANQI而言,室内设计一直是她钟爱的行业选择。 在没有进入莱佛士学习之前,MANQI受家人的影响,从小就对设计行业比较感兴趣。而她选择室内设计,是觉得室内设计是比较有前途的一个专业,随着人们生活品质的提高…

数字化转型-工具变量数据集

01、数据介绍 数字化转型是指企业或个人利用数字技术,如大数据、云计算、人工智能等,对其业务流程、运营模式、决策方式等进行全面、深入的变革,以提高效率、降低成本、提升质量、增强竞争力。在这个过程中,工具变量扮演着至关重…

SpringBoot 集成Nacos注册中心和配置中心-支持自动刷新配置

SpringBoot 集成Nacos注册中心和配置中心-支持自动刷新配置 本文介绍SpringBoot项目集成Nacos注册中心和配置中心的步骤&#xff0c;供各位参考使用 1、配置pom.xml 文件 在pom.xml文件中定义如下配置和引用依赖&#xff0c;如下所示&#xff1a; <properties><pr…

MATLAB求和函数

语法 S sum(A) S sum(A,“all”) S sum(A,dim) S sum(A,vecdim) S sum(,outtype) S sum(,nanflag) 说明 示例 S sum(A) 返回沿大小大于 1 的第一个数组维度计算的元素之和。 如果 A 是向量&#xff0c;则 sum(A) 返回元素之和。 如果 A 是矩阵&#xff0c;则 sum(A) 将…

如何在Linux CentOS部署宝塔面板并实现固定公网地址访问内网宝塔

文章目录 一、使用官网一键安装命令安装宝塔二、简单配置宝塔&#xff0c;内网穿透三、使用固定公网地址访问宝塔 宝塔面板作为建站运维工具&#xff0c;适合新手&#xff0c;简单好用。当我们在家里/公司搭建了宝塔&#xff0c;没有公网IP&#xff0c;但是想要在外也可以访问内…

Spring Boot 中如何处理存取 MySQL 中 JSON 类型的字段

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

K8S部署Nginx与问题

【containerd错误解决系列】failed to create shim task, OCI runtime create failed, unable to retrieve OCI... 环境 # cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) # uname -r 4.18.0-348.rt7.130.el8.x86_64 问题及现象 1、pod的状态全部都是Conta…

谷粒商城实战(013 业务-认证服务-短信验证)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第211p-第p219的内容 介绍 认证中心要集成 社交登录、OAuth2.0、单点登录 等功能 OAuth 2.0&#xff1a; 问题解决&#xff1a; OAuth 2.0 主要…

鸿蒙应用开发之Web组件2

前面学习了加载Web组件,在使用这个组件之前需要设置网络加载的权限,否则是不能使用Web组件,所以大家在使用这个组件时,需要仔细检查是否有设置这个权限。 如果Web组件只是默认加载一次连接,就可以使用构造时传入的参数来决定,如果想不断地变换不同的网络地址,就需要使用…

「GO基础」在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

05_数组和结构体

结构体 结构体的使用(重点) 结构体值传参 传值是指将参数的值拷贝一份传递给函数&#xff0c;函数内部对该参数的修改不会影响到原来的变量 结构体地址传递 传址是指将参数的地址传递给函数&#xff0c;函数内部可以通过该地址来访问原变量&#xff0c;并对其进行修改。…
最新文章