当前位置: 首页 > 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循环

http://www.lryc.cn/news/153627.html

相关文章:

  • QT里使用sqlite的问题,好多坑
  • openGauss学习笔记-59 openGauss 数据库管理-相关概念介绍
  • Nginx安装与部署
  • Linux中Tomcat发布war包后无法正常访问非静态资源
  • 大数据、AI和云原生:引领未来软件开发的技术演进
  • Text-to-SQL小白入门(四)指令进化大模型WizardLM
  • 浅谈红队资产信息收集经验
  • list根据对象中某个字段属性去重Java流实现
  • 软件架构设计(三) B/S架构风格-层次架构(一)
  • 大端字节和小端字节
  • (10)(10.8) 固件下载
  • vue实现列表自动滚动效果
  • 如何通过构建遥感光谱反射信号与地表参数之间的关系模型来准确估算植被参数?植被参数光学遥感反演方法(Python)及遥感与生态模型数据同化算法
  • 持续集成与持续交付(CI/CD):探讨在云计算中实现快速软件交付的最佳实践
  • 【LeetCode题目详解】第九章 动态规划part02 62.不同路径 63. 不同路径 II day39补
  • 四维轻云助力在线管理、展示及分享多种地理空间数据
  • CMake 学习笔记
  • docker高级(DockerFile解析)
  • 抽象类实现接口的意义
  • 什么是接口测试,如何做接口测试?
  • Keil 编译 Debug
  • 【通用消息通知服务】0x3 - 发送我们第一条消息(Websocket)
  • Eclipse打jar包与JavaDOC文档的生成
  • 力扣:80. 删除有序数组中的重复项 II(Python3)
  • linux:需要注意docker和aws的rds的mysql默认是UTC而不是中国时区
  • 访问 GitHub 方法
  • 旅游APP外包开发注意事项
  • ROS机器人编程---------(二)ROS中的核心概念
  • Python学习教程:进程的调度
  • ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案