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循环

相关推荐
全栈师8 分钟前
C#中分组循环的做法
开发语言·c#
FAREWELL0007512 分钟前
C#进阶学习(十六)C#中的迭代器
开发语言·学习·c#·迭代器模式·迭代器
DXM05211 小时前
牟乃夏《ArcGIS Engine地理信息系统开发教程》学习笔记3-地图基本操作与实战案例
开发语言·笔记·学习·arcgis·c#·ae·arcgis engine
csdn_aspnet4 小时前
C# 如何验证磁盘路径,如:D:\\m\aa.txt
c#
电商api接口开发5 小时前
ASP.NET MVC 入门指南四
c#·asp.net·mvc
CHQIUU6 小时前
跨语言哈希一致性:C# 与 Java 的 MD5 之战?
java·c#·哈希算法
技术拾荒者7 小时前
c#加密证件号的中间部分,改为*号
c#
weixin_423995007 小时前
unity 读取csv
unity·c#
绿龙术士8 小时前
C#核心知识
c#·.net
wkj0018 小时前
java 和 C#操作数据库对比
java·数据库·c#