.net
- .net平台
- .net farmework 框架
.net FameWork 框架是 .net平台不可缺少的一部分,提供了一个稳定的运行环境来保证我们基于 .net 平台开发的各种应用能够正常运转,(java 与 Sptingboot的关系)
.net 开发方向
- 开发winform (桌面引用程序)
- Internet 应用程序 ASP.NET
- 手机开发
- Unity 3D游戏开发或则虚拟现实
交互模式
- C/S 客户机client/服务器模式(server)
- B/S 浏览器Browser/服务器模式
C#文件 作用
//C#命名不能以数字开头,每行代码必须以;结尾
using System;
/*
最上面的use XXX 为引用项目名称
命名空间
{
class类
Main 函数是程序的主入口 你写的代码想要执行必须要写在Main函数当中
.Sin:解决方案文件,包含所有解决方案的信息,查看代码直接双击.Sin
.csProj:项目文件,里面包含着项目信息,可以双击打开
}
*/
namespace _01_My_First_Demo
{
class Program
{
static void Main(String[] args)
{
Console.WriteLine("Hello world");
Console.ReadKey();
}
}
}
//类当中,存储信息、
VS中常用快捷键
- Ctrl + K + D 快速对齐代码 //存在错误,无法对齐
- Ctrl + Z 撤销
- Ctrl + J 快速弹出智能提示
- Ctrl + K + C 注释所选代码
- Ctrl + K + U 取消对代码的注释
- Shift + END、Shift + Home
- F1 转到帮助文档
- #Region 和 #EndRegion 折叠冗余代码
变量
- 在计算机中存储数据
//变量类型 变量名
//变量名 = 值;
// 类似于 java 先声明再赋值
int number;
- 红色波浪线: 意味代码中语法出现错误;
- 绿色波浪线: 意味可能出现了错误;
赋值运算符
- = : 表示把等号右边的值赋值给等号左边变量
-
- :表示变量值相加
-
- :表示变量值相减
数组
- 数组的定义
/*
* 结构可以帮助我们一次性声明多个不同类型的变量
* 数组:可以一次性声明多个同类型变量
*/
int[] nums = new int[10] {}; // 实例化声明
string[] names = { "张三","李四","王五","麻六","赵七" };; //自定义
- 数组的方法
int[] nums = new int[] { 1, 2, 6, 5, 4, 3, 1, 9, 8, 7 };
Array.Sort(nums); //针对数组做升序排列
Array.Reverse(nums);
方法
- 函数就是将一堆代码进行重用的一种机制
//函数的语法
// public static 返回值类型 方法名 ([参数列表])
// {
// 方法体
// }
//例子
public static int GetMax(int n1, int n2)
{
return n1 > n2?n1 : n2;
}
- public 访问修饰符,公开的、公共的、哪儿都可以访问
- static 静态的
- 返回值类型 返回值类型是什么就写什么,void代表没有返回值
- 方法名 Pascal 每个单词的首字母都大写,其余字母小写
- 参数列表:完成这个方法所必须要提供给这个方法的条件
- 方法的调用,类名.方法名
int max = Program.GetMax(1,3); - 在某些情况下,类名是可以神略的,如果写的方法与Main在同一个类中
方法中的三个高级参数
- out 、ref、params
out方法
//out参数
//作用: 侧重于在一个方法中可以返回多个不同类型的值
/*使用方法:
1.首先在新参中定义out 参数
2.传入的时候,进行定义,再用out传参
3.
*/
//方法
public static void TestOut(int[] nums, out int max, out int min, out int sum, out int avg)
{
{
max = nums[0];
min = nums[0];
sum = 0;
for (int i = 0; i < nums.Length; i++)
{
if (max < nums[i])
{
max = nums[i];
}
if (min > nums[i])
{
min = nums[i];
}
sum += nums[i]; //总数
}
avg = sum / nums.Length;
// return res;
}
}
//调用
public static void Main(string[] args)
{
//写一个方法,求一个数组中的最大值、最小值、总和、平均值
int[] numbers = { 1, 2, 5, 7, 9, 6, 1, 5, 3, 15, 16, -4 };
int Max = 0;
int Min = 0;
int Totol = 0;
int agv = 0;
TestOut(numbers,out Max,out Min, out Totol, out agv);
Console.WriteLine(Max);
Console.WriteLine(Min);
Console.WriteLine(Totol);
Console.WriteLine(agv);
Console.ReadKey();
}
ref方法
- 作用:能够将一个变量带入一个方法中进行改变,方法新参中加ref,自动返回这个变量;
- 要求:ref参数要求必须在函数外赋值,函数内可以不赋值直接调用;
int a = 18;
int b = 26;
ChangePosition(ref a, ref b);
//使用ref参数
public static void ChangePosition(ref int a , ref int b) {
b = a - b;
a = a - b;
b = a + b;
}
params 可变参数
- 作用:将实参列表中类型一样的数据处理到一起;
- parmas参数必须是形参列表的最后一个参数;
复习
- 常量
const int numer = 10; //加一个const 表明声明的常量 - 枚举类型
public enum Gender //定义枚举类型,使用修饰符enum
{
男,
女
}
{
// 常量 命名时加一个const
const int numer = 10;
Gender gender = Gender.男;
//enum枚举转换成string字符串类型:
//enum_name.枚举值。ToString();
Console.WriteLine(gender.ToString());
string s = "男";
Console.WriteLine("这是将字符串转换为枚举 {0}",(Gender)Enum.Parse(typeof(Gender), s));
}
-
结构
- 结构的修饰符为struct
//定义结构
public struct Person
{
public string _name;
public int _age;
public Gender _gender;
}
//使用
Person zsPerson;
zsPerson._name = "张三";
zsPerson._age = 20;
zsPerson._gender = Gender.男;
-
方法:在C#中也有作用域,一对{}就是一个作用域;
- 可以使用静态变量来模拟全局变量
class Program
{
public static int _number = 10;
public static void Main(string[] args)
{}
}
-
- 不管是形参还是实参,都是在内存中
- 方法的功能一定要单一
- 不要出现提示用户输入的字
方法的重载
- 原因:方法太多,每次调用非常麻烦
- 作用:解决了大量方法,定义调用麻烦的问题;
- 概念:指的是方法的名称相同,但是参数不同;
- 方法的返回值与重载没有关系,
- 后成重载的条件,参数类型不同或者参数的个数不同
方法的递归
- 方法自己调用自己
- 例子:找到一个文件夹中所有的文件
- 一个方法,找到一个指定的文件夹下所有的文件
- Main方法在自身没有办法调用自己