当前位置: 首页 > news >正文

WPF C# .NET7 基础学习

学习视频地址:https://www.bilibili.com/video/BV1hx4y1G7C6?p=3&vd_source=986db470823ebc16fe0b3d235addf050

开发工具:Visual Studio 2022 Community
基础框架:.Net 6.0
下载创建过程略

.Net和.Framework
区别是Net是依赖项,Framework是引用

using:

1.定义一个命名空间,最常用不只包括using namespace,还用开头使用的using System.xxxx.xxxx
2.using static 指令:指定无需指定类型名称即可访问其静态成员的类型

using static System.Math;var = PI; // 直接使用System.Math.PI

3.起别名

using Project = PC.MyCompany.Project;
  1. 当控件离开 using 语句块时,将释放获取的 IDisposable 实例。 using 语句可确保即使在 using 语句块内发生异常的情况下也会释放可释放实例。
var numbers = new List<int>();
using (StreamReader reader = File.OpenText("numbers.txt"))
{string line;while ((line = reader.ReadLine()) is not null){if (int.TryParse(line, out int number)){numbers.Add(number);}}
}

程序执行从Main函数开始执行
简化一个大括号的方法只有namespace适用
在这里插入图片描述
等价于
在这里插入图片描述

C#基本语法

基本语法类似于C++和java;
0.区分大小写
0.1.与java不同,文件名可以和类名称不同
1.关键字:尽量不重名吧
2.注释.cs文件 使用//或/* sth */ 其中///可以作为引用时可以看到的注释
.xaml文件 <!-- sth->

变量

在这里插入图片描述
这种语法查一下:
在这里插入图片描述
长转短类型可转换,短转长不可转换。
字符串拼接
在这里插入图片描述

作用域

父节点资源可以供子节点使用,子节点的不能供同级子节点使用。
在类中声明变量,在类中方法中再次声明会覆盖类中声明的变量。

数组

1.数组声明需要使用new关键字
2.声明数组时可以使用{}初始化元素
3.声明数组之前没有使用{}初始化数组,需要指定数组大小
4.声明初始化有元素的数组的时候,也可以指定数组大小。

数组转换

int.Parse只支持从string转换成int,在2023版本,string只能是整数,小数会报错,然后转换成都double类型,则使用double.Parse
Convert.ToInt32,不完全遵循四舍五入,当正好为.5时,输出周围两数的偶数,其余数字输出正常。
Convert.ToInt32可以输出null,但是int.Parse只能处理非空string。

函数与方法

函数->对象的动作行为,计划好承担的作用,越单一越好。
命名规范大驼峰规则
参数设置和传参行为
参数:外部需要函数处理的数据
传参行为:个人理解,写不出来了
返回值设定int、void、Task啥的

参数修饰符

修饰符种类:
1.无修饰符,认为按值进行传递,被调用的方法收到原始数据的一份副本。
2.out:输出参数由被调用的方法赋值,被调用的方法没有给输出参数赋值会出现编译错误
3.ref: 调用者赋初值,可以由被调用方法可选的重新赋值,不赋初值编译错误
4.params:这个修饰符只能作为最后一个参数传入,作为一个可变数量的参数传入。
ref和out:
1.out传入参数必须在方法内修改,ref可修改可不修改
2.ref修饰的参数,在实参必修有初值时才能调用,ref修饰的不一定会给赋值。

封装案例

这部分简单,就是加个函数。

面向对象基础(OOP)

类和对象概念啥的
声明类

public class xxx{
}

声明属性
属性特殊,常用书写方法

public int xxx{get;set;}

有get字段,获取该属性的值;
有set字段,设置该属性的值;
类:
在这里插入图片描述

下面使用类的写法一致:
在这里插入图片描述

访问修饰符

public:公有属性,所有类可以访问
private:私有属性 当前类内部可以访问
protected:受保护的 当前类以及继承它的子类可以访问
internal:内部的 只限于本项目内访问,其他不可以访问
protected internal:内部保护访问 只能时本项目内部或子类访问 其他类不能访问
类中的成员默认访问是私有的,类本身默认是internal
静态 使用static修饰,静态和属性可以通过类型直接获取,非静态必须通过实例化获取
一般情况不需要使用static,只有类型中有扩展方法的时候,例如传入参数是this string xxx时,只能将class的修饰换为static。

继承

继承东西太多了,多写多用
子类中的属性,父类得不到其中的属性。
子类转父类使用as可以得到null属性,可以加判断减少程序崩溃

接口(Interface)

C#一般只能单继承,一个类只能继承一个父类,但是接口可以让一个类拥有多个基类
构造函数没有返回值类型
多态还是利用接口,完成相似类型的输出

值类型和引用类型

值类型保存数据
引用类型存储其数据的引用
声明引用类型的关键字:
class
interface
delegate
record
C#提供的内置引用类型:
dynamic
object
string
值类型
结构类型:用于封装数据和相关功能:struct
枚举类型:一组,类似数组
整型、浮点、bool、char

值类型作为一种副本,重新占用空间,另一个改变不影响这个,类似{int i=1;int j=i;j++}j改变i不变,引用类型时j变化,i也变化

因为引用时直接按引用地址改变,改变地址内的值。

集合

数组在内存中连续存放,索引非常快,但是对于插入删除啥的太慢了,数组声明的时候就已经固定大小了。
ArrayList是用于数据存储和检索的专用类。是命名空间System。collectioons下的一部分。
按照其中存储的数组动态扩充与收缩(收缩指的时可以使用的索引,但是占用的大小只能不断扩大)。
声明时不需要指明长度。
方便进行删除,插入,添加。

ArrayList arr=new ArrayList;
ArrayList.add();
ArrayList.Insert(位置,数据);
ArrayList.RemoveAt(位置);
ArrayList.Remove(值);
ArrayList.RemoveRange(起始索引,个数);

劣势:在存储数据时使用object类型进行存储,不是类型安全的,可能出现类型不匹配的错误。
插入同一类型的数据,需要将其转换成原来的类型进行处理。
存储存在装箱和拆箱操作,性能低下。
装箱值类型隐式转换成引用类型
拆箱引用类型显示转换成值类型
List集合
声明list集合的时候,需要同时声明list集合中数据的

List<int> intList = new List<int>;

C#里的集合可以有相同的数据;

//等价于ArrayList,但是一般不建议
List<object> intList = new List<object>;

字典(Dictionary)

有键(key)和值(value),键唯一,但value不唯一,一个值可以由多个值对应。

熟悉foreach循环

相关文章:

WPF C# .NET7 基础学习

学习视频地址&#xff1a;https://www.bilibili.com/video/BV1hx4y1G7C6?p3&vd_source986db470823ebc16fe0b3d235addf050 开发工具&#xff1a;Visual Studio 2022 Community 基础框架&#xff1a;.Net 6.0 下载创建过程略 .Net和.Framework 区别是Net是依赖项&#xff…...

QT里使用sqlite的问题,好多坑

1. 我使用sqlite&#xff0c;开发机上好好的&#xff0c;测试机上却不行。后来发现是缺少驱动&#xff08;Driver not loaded Driver not loaded&#xff09;&#xff0c;代码检查了又检查&#xff0c;发现应该是缺少dll文件&#xff08;系统不提示&#xff0c;是自己使用 QMes…...

openGauss学习笔记-59 openGauss 数据库管理-相关概念介绍

文章目录 openGauss学习笔记-59 openGauss 数据库管理-相关概念介绍59.1 数据库59.2 表空间59.3 模式59.4 用户和角色59.5 事务管理 openGauss学习笔记-59 openGauss 数据库管理-相关概念介绍 59.1 数据库 数据库用于管理各类数据对象&#xff0c;与其他数据库隔离。创建数据…...

Nginx安装与部署

文章目录 一,说明二,下载三,Windows下安装1,安装2,启动3,验证 四,Linux下安装1,安装2,启动3,验证 五,Nginx配置 一,说明 Nginx是一款高性能Web和反向代理服务器,提供内存少,高并发,负载均衡和反向代理服务,支持windos和linux系统 二,下载 打开浏览器,输入地址: https://ngin…...

Linux中Tomcat发布war包后无法正常访问非静态资源

事故现象 在CentOS8中安装完WEB环境&#xff0c;首次部署WEB项目DEMO案例&#xff0c;发现可以静态的网页内容&#xff0c; 但是无法向后台发送异步请求&#xff0c;全部出现404问题&#xff0c;导致数据库数据无法渲染到界面上。 原因分析 CentOS请求中提示用来获取资源的连…...

大数据、AI和云原生:引领未来软件开发的技术演进

文章目录 **1. 数据驱动的创新&#xff1a;****2. 智能化应用的兴起&#xff1a;****3. 云原生的敏捷和可扩展性&#xff1a;****4. 实时性和即时性&#xff1a;****5. 数据隐私和安全&#xff1a;****6. 跨平台和跨设备&#xff1a;****7. 自动化和智能编程&#xff1a;****8.…...

Text-to-SQL小白入门(四)指令进化大模型WizardLM

摘要 本文主要对大模型WizardLM的基本信息进行了简单介绍&#xff0c;展示了WizardLM取得的优秀性能&#xff0c;分析了论文的核心——指令进化方法。 论文概述 基本信息 英文标题&#xff1a;WizardLM: Empowering Large Language Models to Follow Complex Instructions中…...

浅谈红队资产信息收集经验

文章目录 子公司资产收集备案号|官网收集子域名|ip收集fofa灯塔ARLX情报社区 资产确认目录扫描Google Hacking绕过CDNnmap端口扫描参数技巧其他常用工具 子公司资产收集 红蓝对抗中往往只会给你目标企业的名称&#xff0c;以及对应的靶标系统地址&#xff0c;而很少有直接从靶标…...

list根据对象中某个字段属性去重Java流实现

list根据对象中某个字段属性去重Java流实现&#xff1f; 在Java的流(Stream)中&#xff0c;你可以使用distinct方法来实现根据对象中某个字段属性去重的功能。要实现这个功能&#xff0c;你需要重写对象的hashCode和equals方法&#xff0c;以确保相同字段属性的对象被认为是相…...

软件架构设计(三) B/S架构风格-层次架构(一)

层次架构风格从之前的两层C/S到三层C/S,然后演化为三层B/S架构,三层B/S架构之后仍然在往后面演化,我们来看一下层次架构演化过程中都有了哪些演化的架构风格呢? 而我们先简单了解一下之前的层次架构风格中分层的各个层次的作用。 表现层:由于用户进行交互,比如MVC,MVP,…...

大端字节和小端字节

介绍 大端字节序&#xff08;Big-Endian&#xff09;和小端字节序&#xff08;Little-Endian&#xff09;是在计算机系统中用来表示多字节数据类型&#xff08;如整数、浮点数等&#xff09;的存储方式。字节序指的是在内存中多字节数据的存放顺序&#xff0c;即哪个字节在前&…...

(10)(10.8) 固件下载

文章目录 ​​​​​​​前言 10.8.1 固件 10.8.2 Bootloader 10.8.3 APM2.x Autopilot 10.8.4 许可证 10.8.5 安全 前言 固件服务器(firmware server)可提供所有飞行器的最新固件。其中包括&#xff1a; CopterPlaneRoverAntennaTrackerSub 本页提供了一些被视为&quo…...

vue实现列表自动滚动效果

效果如图&#xff1a; 1.下载插件 npm install vue-seamless-scroll --save 2.在main.js中引入注册 import scroll from vue-seamless-scroll Vue.use(scroll) 3.在页面中使用&#xff08;写一个固定的表头 el-table:show-header"status" 设置为false,自带的表头不…...

如何通过构建遥感光谱反射信号与地表参数之间的关系模型来准确估算植被参数?植被参数光学遥感反演方法(Python)及遥感与生态模型数据同化算法

目录 专题一 植被参数遥感反演理论 专题二 植被叶片及冠层反射率模拟与处理 专题三 植被遥感模型参数敏感性分析 专题四 基于查找表(LUT)方法反演植被参数 专题五 基于优化算法反演植被参数 专题六 基于机器学习反演植被参数 专题七 遥感数据同化理论 专题八 同化遥感反…...

持续集成与持续交付(CI/CD):探讨在云计算中实现快速软件交付的最佳实践

文章目录 持续集成&#xff08;CI&#xff09;的最佳实践持续交付&#xff08;CD&#xff09;的最佳实践云计算环境下的特别注意事项 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&am…...

【LeetCode题目详解】第九章 动态规划part02 62.不同路径 63. 不同路径 II day39补

本文章代码以c为例&#xff01; 一、力扣第62题&#xff1a;不同路径 题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;…...

四维轻云助力在线管理、展示及分享多种地理空间数据

《四维轻云》是一款轻量化的地理空间数据管理云平台&#xff0c;支持倾斜摄影模型、激光点云、数字高程模型及正射影像等多种地理空间数据的在线管理、展示及分享。目前&#xff0c;平台有项目管理、数据上传、场景搭建、发布分享、素材库等功能模块&#xff0c;支持多人在线协…...

CMake 学习笔记

一直想了解CMake&#xff0c;但是不知从何入门。最近看了CMake 官方的Tutorial&#xff0c;感觉的确很适合入门。 首先要安装CMake, 安装步骤: 直接去下载最新版Download | CMakemacos 点开CMake 后&#xff0c;遵循“How to Install For Command Line Use” 菜单项&#xff0…...

docker高级(DockerFile解析)

1、构建三步骤 编写Dockerfile文件 docker build命令构建镜像 docker run依镜像运行容器实例 2、DockerFile构建过程解析 Dockerfile内容基础知识 1&#xff1a;每条保留字指令都必须为大写字母且后面要跟随至少一个参数 2&#xff1a;指令按照从上到下&#xff0c;顺序执行…...

抽象类实现接口的意义

文章目录 前言一、抽象类和接口对比二、举例说明三种情况1.接口实现类接口 2.抽象类实现类抽象类实现类(子类) 3.抽象类实现接口接口抽象类三个实现类 总结 前言 抽象类和接口其实都是抽象的一种,那么他俩有何异同呢? 抽象类实现接口的意义何在? 一、抽象类和接口对比 接口…...

什么是接口测试,如何做接口测试?

比起点点点的功能测试&#xff0c;“接口测试”显得专业又高大上&#xff0c;也因此让有些初级测试人员“望而生畏”。别担心&#xff0c;其实接口测试也是功能测试的一种&#xff0c;它是针对接口进行的功能测试。 写在前面&#xff1a;本文参考了茹炳晟老师的《测试工程师 全…...

Keil 编译 Debug

# 头文件无法导入进来 # 导入头文件&#xff0c;只有函数声明&#xff0c;但缺少函数实现 已经导入了air32f10x_gpio.h但是没有导入 .c&#xff0c;就导致 编译出错出现undefined symbol (某个函数)&#xff0c;这时候按照下面的操作&#xff0c;导入外设模块就好。...

【通用消息通知服务】0x3 - 发送我们第一条消息(Websocket)

【通用消息通知服务】0x3 - 发送我们第一条消息 项目地址: A generic message notification system[Github] 实现接收/发送Websocket消息 Websocket Connection Pool import asyncio from asyncio.queues import Queue from asyncio.queues import QueueEmpty from contextli…...

Eclipse打jar包与JavaDOC文档的生成

补充知识点——Eclipse打jar包与JavaDOC文档的生成 1、Eclipse如何打jar包&#xff0c;如何运行jar包 Java当中编写的Java代码&#xff0c;Java类、方法、接口这些东西就是项目中相关内容&#xff0c;到时候我们需要把代码提供给甲方、或者是我们需要运行我们编写的代码&…...

力扣:80. 删除有序数组中的重复项 II(Python3)

题目&#xff1a; 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下…...

linux:需要注意docker和aws的rds的mysql默认是UTC而不是中国时区

问题&#xff1a; 如题 解决办法&#xff1a; docker参考&#xff1a; mysql时间不对&#xff0c;修改时区_set global time_zone 无效_《小书生》的博客-CSDN博客 aws参考&#xff1a; https://www.youtube.com/watch?vB-NaqV-A1BY mysql - AWS修改RDS时区 - 个人文章 - Segm…...

访问 GitHub 方法

访问 GitHub 方法 方法一&#xff1a;最常见的就是 fq&#xff0c;但这个是违法的行为&#xff0c;自己私下搞可以&#xff0c;不能教你们。 方法二&#xff1a;利用加速器&#xff0c;这是正规合法操作。这里推荐一个免费的加速器&#xff0c;下载安装 Watt Toolkit加速器,原名…...

旅游APP外包开发注意事项

旅游类APP通常具有多种功能&#xff0c;以提供给用户更好的旅行体验。以下分享常见的旅游类APP功能以及在开发和使用这些APP时需要注意的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 常见功能…...

ROS机器人编程---------(二)ROS中的核心概念

ROS机器人编程 ROS中的核心概念 ROS的通信机制 在ROS中结点是最小单元&#xff0c;比如说机器人的遥控器可以作为一个控制结点&#xff0c;机器人上的摄像头也可以看作一个结点&#xff0c;ROS通过协调各个结点来实现 在启动任何ROS结点之前&#xff0c;都必须先启动ROS Mas…...

Python学习教程:进程的调度

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 要想多个进程交替运行&#xff0c;操作系统必须对这些进程进行调度&#xff0c; 这个调度也不是随即进行的&#xff0c;而是需要遵循一定的法则&#xff0c;由此就有了进程的调度算法。 python更多源码/资料/解答/教程等 …...