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 指令:指定无需指定类型名称即可访问其静态成员的类型

csharp 复制代码
using static System.Math;var = PI; // 直接使用System.Math.PI

3.起别名

csharp 复制代码
using Project = PC.MyCompany.Project;
  1. 当控件离开 using 语句块时,将释放获取的 IDisposable 实例。 using 语句可确保即使在 using 语句块内发生异常的情况下也会释放可释放实例。
csharp 复制代码
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)

类和对象概念啥的

声明类

csharp 复制代码
public class xxx{
}

声明属性

属性特殊,常用书写方法

csharp 复制代码
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

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

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

集合

数组在内存中连续存放,索引非常快,但是对于插入删除啥的太慢了,数组声明的时候就已经固定大小了。
ArrayList 是用于数据存储和检索的专用类。是命名空间System。collectioons下的一部分。

按照其中存储的数组动态扩充与收缩(收缩指的时可以使用的索引,但是占用的大小只能不断扩大)。

声明时不需要指明长度。

方便进行删除,插入,添加。

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

劣势:在存储数据时使用object类型进行存储,不是类型安全的,可能出现类型不匹配的错误。

插入同一类型的数据,需要将其转换成原来的类型进行处理。

存储存在装箱和拆箱操作,性能低下。
装箱 值类型隐式转换成引用类型
拆箱 引用类型显示转换成值类型
List集合

声明list集合的时候,需要同时声明list集合中数据的

csharp 复制代码
List<int> intList = new List<int>;

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

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

字典(Dictionary)

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

熟悉foreach循环

相关推荐
ctrl_v助手1 分钟前
VisionPro (R) QuickBuild相机的连接
服务器·笔记·数码相机·c#
北域码匠1 小时前
奇偶归并排序:并行计算的排序利器
数据结构·算法·c#·排序算法
zhangfeng11332 小时前
国家超算中心 昆山站 异构加速卡1 显存16GB详细配置, 海光 Z100SM HCU
linux·网络·深度学习·c#
z落落2 小时前
C# WinForm TreeView 树形控件+ListView控件+菜单栏
开发语言·c#
ABprogramming3 小时前
Aspire入门指南
c#·.net
加号33 小时前
【C#】VS2022 传统 ASP.NET Web 服务(.asmx)接口实现指南
前端·c#·asp.net
加号314 小时前
【C#】 文件与目录管理:创建、删除操作的技术解析
开发语言·c#
用户3952409988018 小时前
SqlSugar 连接 PostgreSQL 报错 42P01: relation does not exist 的排查与修复
c#
2601_9618752419 小时前
法考考试时间安排及科目|时间表|资料已整理
开发语言·c#·inverted-index·suffix-tree·sstable·r-tree·lsm-tree
ServBay19 小时前
你跟高级 C# 工程师的区别,就是这8个开发技巧
后端·c#·.net