11
a+b
3+8
a+b38
a+b11
11
a+b
3+8
a+b38
a+b11
于
委托-案例
委托(相当于定义了一个没有函数体的函数,定义好了只能放回返回值和参数列表要一致的)
在实际项目中更能体会作用,这里先了解基本使用。
委托(delegate)是一种存储函数引用的类型。
委托的定义指定了一个返回类型和一个参数列表
定义了委托之后,就可以声明该委托类型的变量,接着就可以把一个返回类型跟参数列表跟委托—样的函数赋值给这个变量。
委托的使用分两步
定义
声明(变量)
结构体,枚举的使用同上都分为定义和声明
整数类型、数组类型、字符串类型都是直接声明变量的,因为类型的定义已经完成了(CLR中已经完成定义)
//定义两个函数体
static double Mnltiply(double param1, double param2)
{
return param1 * param2;
}
static double Divide(double param1, double param2)
{
return param1 / param2;
}
//委托是不需要函数体的
delegate double MyDelegate(double param1, double param2);
static void Main(string[] args)
{
//返回值和参数列表要一致
MyDelegate delegate1;
delegate1 = Mnltiply;
Console.WriteLine(delegate1(2,4));
}
结构体练习
(可以理解简单版的)
结构体函数
//1,定义
struct Position
{
public double x;
public double y;
public double z;
//把方法写进结构体里
public void PrintPositiong()
{
Console.WriteLine(x + "," + y + "," + z);
}
}
//定义一个方法,这个方法为 Position 结构体服务
static void PrintPositiong(Position p)
{
Console.WriteLine(p.x + "," + p.y + "," + p.z);
}
//2,调用
static void Main(string[] args)
{
Position zBiao;
zBiao.x = 24.5;
zBiao.y = 18.6;
zBiao.z = 6.58;
zBiao.PrintPositiong();
//PrintPositiong(zBiao);
}
two \\ represents one slash if you want to print in your window.
writeline和write的区别
write输出的不换行:
writeline换行:
\n line end
\t represents four characters:
枚举类型
枚举类型
class Program
{
//定义一个枚举类型
enum RoleType //枚举类型的名字
{
//函数–定义使用
//1法师(Mage)、2射手(Archer)、3刺客(Assassin)、4坦克(Tank)、5辅助(Suppont)、6战士(Wanrion)
Mage, Archer,Assassin,Tank,Suppont,Wanrion//枚举类型的值
}
static void Main(string[] args)
{
RoleType roleType = RoleType.Assassin;//刺客(Assassin)
Console.WriteLine();
}
}
const 关键字,用来定义了属性值后就不可发生变了,为常亮
1,循环方式
//int k = 1;
//int sum = 0;
//while (true)
//{
// sum += k*k;
// if (sum>=2000)
// {
// break;
// }
// k++;
//}
//Console.WriteLine(k-1);
2、
递归函数练习
10!的阶乘
一、用循环
//1、用循环
int result = 1;
for (int i =1; i<11;i++)
{
result *= i;
}
Console.WriteLine(result);
二、用递归
static int F(int n)
{
if (n == 1)
{
return 1;
}
int res = n * F(n - 1);
return res;
}
Console.WriteLine(F(10));
面数的重载- Overload
函数名相同,参数不同,这个叫做函数的重载(编译器通过不同的参数去识别应该调用哪一个函数)
函数名相同,参数相同,这个叫做函数的重写
类型一致
右边值所需要大小一致
Console.WriteLine("Hello World!")
using System;
namespace _001_开始
{
internal class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
}
}
}
namespace name
{
}
int a;
int a=1;
int a,b,c;a=b=c=1;
int a=1,b=1;
类型正确
先生再赋
规则人性化使用就可以。
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
int a=2;
a = a + 1;
double b, c, d; b= c = d = 0.5;
b = c + d + a;
Console.WriteLine(a);
Console.WriteLine(b);
}
}
}
还是要打字才可以 光看不行
1,定义一个方法来计算最大值
static int Max(int[] array)
{
int max = array[0];
for (int i=1;i<array.Length;i++)
{
if (array[i]>max) //判断数组是否大于max
{
max = array[i];//如果大于,则附给max
}
}
return max; //放回max (最大值)
}
////1,获取用户输入
//string str = Console.ReadLine();//获取键盘上输入的值
//string[] strArray = str.Split(" ");//使用 Split()方法进行空格分割
//int[] inArray = new int[strArray.Length];//定义一个数组
//for (int j=0;j<strArray.Length;j++)
//{
// int number = Convert.ToInt32(strArray[j]);
// inArray[j] = number;
//}
//int n = Max(inArray);
//Console.WriteLine(n);
2,计算因子
//因子是可以整除的
static int[] GetIn(int number)
{
//1,拿来计算因子的个数
int count = 0;
for (int i=1;i<number+1;i++)
{
if (number%i==0)
{
count++;
}
}
//2,创建一个对应长度的数组
int[] array = new int[count ];
int index = 0;//定义一个索引用来创建存储该数组索引的位置
for (int i=1;i<number+1;i++)
{
if (number % i == 0)
{
array[index] = i;
index++;
}
}
return array;
}
//1,获取用户输入的整数
int number = Convert.ToInt32(Console.ReadLine());
//2,定义一个数组用来接收
int[] array = GetIn(number);
//用一个foreach()方法来遍历因子
foreach (int temp in array)
{
Console.Write(temp+" ");
}
Console.WriteLine("\n1\n2\t3");
Console.WriteLine("1\n2\t3");
Console.WriteLine("1\n\t2\n3");
Console.WriteLine("1\t2\n3\n");