C#入门学习

一. Net FraameWork框架

提供稳定环境保证.Net正常运行

1. 公共语言运行是(CLR)

2. .Net类库

二. 项目文件讲解

.sln :解决方案文件,里面包含着整个解决方案的信息,可以双击运行。
.csproj:项目文件,里面包含着这个项目的信息,可以双击运行。

三. 基础

1.数据类型

decimal 数值后面跟一个m,金钱小数类型

2.占位符

{0},{1},{2}
Console.WriteLine(“{0}{1}{2}”,a,b,c);

3.基础语法

1).控制台显示

Console.WriteLine(“控制台显示数据”)。
Console.ReadKey();//暂停当前程序,等于用按下任意键继续,按下的任意键显示到控制台中。
String str=Console.ReadLine();//获取控制台数据

2).@用法

System.IO.File.WriteAllText(@“地址”,str(文本));//写入文本
//1. 前面加一个@地址里面的就可以取消\转义符的作用。
//2.保持编辑字符串原有格式输出。

3).Convert/TryParse/parse

Convert
转换工厂转换,能够转才可以
成功了就是返回,不成功就抛出异常
String s=“123”;
double numble=Convert.ToDouble(s);
数据类型.TryParse
数据类型转换,成功过了返回true,失败返回false
double d=int.TryParse(s,out i);
数据类型.parse(“字符串”)
字符串转成数据类型

4).异常捕获😊

try-catch

5).枚举😊

[public] enum 枚举名 Gender
{
值1,男,(男=2)
值2 女
}
枚举转换成其他类型
Gender gender=Gender.男;
(int)gender.男;//0
(gender)1;//女
字符串转成枚举类型
string s=“男”;
Enum.Parse(typeof(Gender),s);
//如果是数字串没有不会,抛出异常
//文本,就会抛出异常

6).方法里面的高级参数😊

(1).out
返回多个数据类型不同的值。out返回参数值,要求在方法内部必须赋值
public static void a(int[] num,out int max,out string min){
}
int max;
string min;
a(num,max,min);
(2).ref
将一个变量带入方法,改变完成后带回。跟C++引用相似
int a=3;
add(ref a);
void add(ref int a)
{a++;}
(3).params 可变参数
将参数列表跟可变参数数组类型一致的元素都当成数组的元素处理。
必须是最后一个元素,只能加一个。
Test(“成绩”,90,23,32);
void Test(String s,params int[] num){};

7).重载😊

方法名称相同,参数不同。
1.个数相同,类型不同。
2.类型相同,个数不同。
跟返回值没有关系。

4.面向对象

1).属性(get/set)😊

//这里是属性不是方法
private string name;
public string Name
{
//获取直接get
get{return name};
//给值的时候执行set
set{name=get};
}
public string Name{get;set;};

c.A = 1;
Console.WriteLine(c.A);
c.B = “12”;
Console.WriteLine(c.B);

2).静态和非静态😊

1.在非静态中,既可以有实例成员,也可以用静态成员;
2.在调用实例成员的时候,需要对象名.实例成员;
调用静态成员的时候,类名.静态成员名;
静态函数只能访问静态成员,不允许访问实例成员;
实例函数,都可以;
静态类中只允许有静态成员,不允许出现实例成员;
使用:
1.可以写成工具类,一次存储,反复使用;
2.静态类在整个项目中资源共享;
实例化----栈
静态-------地址栈-----数据堆
释放资源:GC(程序结束后,静态释放)

3).构造函数😊

1.构造函数没有返回值,也没有void;
2.与类名相同;
创建对象的时候会执行构造

4).new😊

1.在内存开辟一块空间;
2.在开辟空间中创建对象;
3.调用对象的构造函数进行初始化对象;

5).this😊

1.代表当前类;
2.类中显示调用本类的构造函数;:this()
public Class1(int a,string b) {
this.a = a;
this.b = b;
}
public Class1(int a) : this(a, “000”) {
}

6).析构函数😊

~Student()
{
};//释放资源

7).值类型/引用类型😊

1.值类型和引用类型在内存上存储上存储地方不一样
值类型:—栈
引用类型:string,自定义类型,数组;—堆
2.在值传递类型和引用传递类型的时候,传递的方式不一样;
值传递称值传递类型,引用传递称为引用传递类型;

8).字符串😊

1.字符串不可变性;
字符串存储之后就不可以改变,只能开辟存储新空间,进行重新指向;
产生的垃圾GC回收;
string s1=“zhang”;
string s2=“zhang”
地址一样
2.可以看错是一个char类的只读字符
s1[1];
字符串转成字符数组:
char[] ch=s1.ToCharArray();
字符数组转为字符串
s=new string(ch);
3.StringBuilder
4.创建计时器
Stopwatch sw=new Stopwatch();
sw.Start();

sw.Stop();
Console.WriteLine(sw.Elapsed);
5.常用函数
string Replace(str old,str new);//替换
string Substring(int index)//取子串,从index到结束,(index,length)从index到length长度
string
bool Contains(string str)//判断是否含有str
bool StartWith(string str)//是否str开始
bool EndsWith(string str)//是否str结束
int IndexOf(string str)//str第一次出现的位置;(str,index)从index开始第一次出现str的位置
LastIndexOf
Trim() //去掉前后空格
TrimStart()//前面
TrimEnd()//后面
bool IsNullOrEmpty()
string[] s={“1”,“2”};
string str=string.join(“!”,s);
split
6.str.Fomat(“{0:C}”,1000);//货币形式表示
str.Fomat(“{0:F2}”,231.1231);//保留两位小数(自动四舍五入)
str.Fomat(“{0:P}”,23.232);//百分比的形式表示(自动四舍五入)
str.Fomat(“{0:E}”,1000);//科学计数法
str.Fomat(“{0:G}”,1000);//常规
str.Fomat(“{0:N}”,1000);//用分号隔开数字
str.Fomat(“{0:X}”,1000);//十六进制

9).继承😊


子类继承了父类的属性和方法,但是子类没有继承父类的私有字段;
子类并不会继承父类的构造函数,但是,子类会默认的调用父类的无参构造函数,创建父类对象,让子类可以调用父类成员;
如果父类写了一个构造之后,父类的默认就会被干掉,子类就调用不了了;
1.在父类重新写一个无参构造;
2.子类显示调用父类构造函数:base();
继承的特性:
1.继承的单根性,一个子类只有一个父;
2.继承的传递性;

10).new 子类隐藏父类同名函数😊

父类:
public new void Say(){
}
子类
public new void Say(){
Console.Writeline(“Hello”);
}
子类隐藏父类同名函数,要加关键字new;

11)里氏转换😊

1.子类可以赋值给父类:如果一个地方需要父类作为参数,我们可以给一个子类代替;
Person p=new Student();
2.如果父类中装了是子类对象,那么可以将这个父类强转为子类对象;
Student student=(Student)p;
3.类型转换
is :如果转换成功,返回true,不能false;
as:如果能转换返回对应的对象,不能返回Null;

12)多态😊

概念:让一个对象能够表现出多种状态(类型)
实现:1.虚方法2.抽象类3.接口
1.将父类方法标记为虚方法,virtual
重写加:Override
2.父类不知道怎么实现时,可以写成抽象类 abstract,抽象不能有方法体。

13)抽象😊

1.抽象成员必须标记为abstrcat,并且不能有任何实现
2.抽象成员必须在抽象类中
3.抽象类不能被实例化
4.继承抽象类必须把所有放抽象方法重写;
5.访问属性不能时private
6.在抽象类中可以包含实例成员,并且抽象类的实例成员可以不被子类实现;
7.抽象类是有构造的,但是不能实例化;
8.如果抽象方法中有参数,那么,继承这个抽象的父类的子类在重写父类的方法时候必须传入对应参数,如果抽象父类抽象方法中有返回值,那么子类必须有返回值;
使用选择:
1.如果父类中的方法有默认实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通函数,用虚函数;
2.如果父类中的方法没有默认实现,父类不需要实例化,则可以定义为抽象类;

5.集合

1).ArrayList😊

与数组区别:

  1. 长度可以改变;
  2. 类型任意

常用函数:
Add();//添加一个元素,如果是集合存的就是地址;
AddRange();//添加一个集合;
Remove(元素);
RemoveAt(下标);
RemoveRange(strat,end);
sort();//升序类型一致
Reverse();//反转
Insert(index,)//指定位置
InsertRanger
bool Contains();//包含
count//表示实际包含的元素个数
Capacity//表示可包含的个数,不够了扩容一倍

2).Hashtable😊

键值对集合,键值唯一
add(1,2);
//还可以h[6]=""添加 如果6有就把原来的干掉,没有就添加,里面内涵索引
foreach()
var//可以根据值推断出类型,必须初始化;
注:倒叙输出

3).字典集合😊

Dictionary<int ,string>

3).Path😊

string str=@“C:\a\b\c.cs”
Path.GetFileName(str);
//快速获得文件名字
Path.GetFileNameWithoutExtension(str);
//获得名字不包括扩展名
Path.GetExTension(str);
//直接获取扩展名
Path.GetDirectoryName(str);
//文件夹的名称的名称
GetFullPath(str);
//全部路径
Combin(1,2);
//拼接两个路径

3).File😊

create
delete
copy
ReadAllLines();//一行一行输出
ReadAllBytes();
ReadAllText();//一串字符串
WriteLine();

4).编码😊

5).泛型😊

ToArray

6).装箱/拆箱😊

//存在继承关系才可以,这两类是否存在继承关系。有继承才可能
讲普通类型转换成引用类型
速度会变慢
string str=“123”;
int num=Convert.ToInt64(str);//这个就不是
int n=10;
IComarable i=n;//装箱

提示:标记与java,c++有所不同的地方

注:VS快捷键

KeyValue
Ctrl+K+D快速对齐
Ctrl+R+E快速生成get,set
Ctrl+K+F快速格式化
Ctrl +B快速生成
Ctrl+U第一个变小写
Ctrl+D快速复制本行内容
Ctrl +F查找内容
Ctrl+H替换内容
Ctrl+G快速转到行和列
Ctrl+N新建
Ctrl+K+X插入片段
Ctrl +K+C注释
Ctrl+K+U取消注释
Ctrl +J智能提示
End行尾
Home(+箭头)行头
#region…#endregion折叠行
F12转到代码

提示:这里可以添加要学的内容

// An highlighted block
var foo = 'bar';

例如:

  1. 搭建 Java 开发环境
  2. 掌握 Java 基本语法
  3. 掌握条件语句
  4. 掌握循环语句

学习内容2

提示:这里可以添加要学的内容

// An highlighted block
var foo = 'bar';

例如:

  • 周一至周五晚上 7 点—晚上9点
  • 周六上午 9 点-上午 11 点
  • 周日下午 3 点-下午 6 点

详细内容:

提示:这里可以添加要学的内容

Markdown
Text-to-HTML conversion tool
Authors
John
Luke

提示:这里可以添加计划学习的时间


学习产出:

提示:这里统计学习计划的总量

例如:

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 习的 vlog 视频 1 个

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值