这篇文档只是我课后整理所学知识,方便自己期末复习,所以如果能帮到您那是我的荣幸,有明显错误,也欢迎大佬指正提出。如果觉得太过粗浅实乃正常,望谅解
网上视频教程我看的是mooc上唐大仕老师的《c#程序设计》,很多例子在老师课程中有的。
int a = 1;
string str = a.ToString(); //将a转化为字符串
int b = int.Parse(str); //将str转化为int
int c = Convert.ToInt32(str); //将str转化为int
输出语句快捷键:cw,再按两次Tab
string str2 = Console.ReadLine(); //输入格式
Console.WriteLine(str2); //输出格式
//这是格式化输出形式,a输出两次
Console.WriteLine("a={0}{0}", a);
//这是格式化输出形式,a, b, c分别输入012中
Console.WriteLine("a={0}"+"b={1}"+"c={2}", a, b, c);
//这种输出形式下,括号内可进行表达式运算
Console.WriteLine($"a={a}" + $"sum={a+b+c}");
c#没有非零即真的说法,if必须产生一个bool值
switch得到了加强,可以使用字符串进行判断
包括:
简单类型 又分为 整数类型、实数类型、十进制类型、布尔类型
结构类型
枚举类型
包括:
与各种语言大同小异,这里直接转载大佬整理的笔记,有需要的可以仔细研读。
C#中的表达式与运算符
运算中的类型转换
具体需要注意的是,当有不同种类的混合运算时:
int->long->float->double
int之下,所有的byte,short,char等运算时都会转为int。
运算符优先级与结合性
单目>算术>关系>逻辑>三目>赋值
唐老师视频中流程控制语句有一些容易忘的东西,把这些记录下来希望自己能记住。
private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics(); //拿到画笔
int x0 = this.Width / 2;
int y0 = this.Height / 2;
for(int i=0; i<this.Height/2; i++)
{
// g.DrawEllipse(new Pen(getRandomColor(), 边框宽度), 左边边界, 右边边界, 圆的宽, 圆的高);
g.DrawEllipse(new Pen(getRandomColor(), 1), x0 - i, y0 - i, i * 2, i * 2);
}
g.Dispose(); //释放画笔
}
Random rnd = new Random();
private Color getRandomColor()
{
//256是因为next会取0-255,下限是不取的,如果后面+1,则取值范围为1-256
return Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
}
这里主要是有关graphics的一点点用法,以及random.next的取值范围问题。
int []as = new int[3];
foreach(int a in as)
{
…
}
foreach是只读式遍历
//源数组
int[] source = {1,2,3,4,5,6};
//目的数组
int[] dest = {10,9,8,7,6,5,4,3,2,1};
//复制源数组中从下标0开始的source.length个元素到目的数组,从下标0开始存储
Array.Copy(source,0,dest,0,source.Length);
int[,] a = {{1,2,3},{4,5,6},{7,8,9}};
c#中交错数组是数组的数组
int[][] t = new [3][];
t[0] = new int[2];
…
前面一个括号是数组的个数,不能缺少,如果写成int[][] t = new [][3]是错误的
private String _name;
public String Name{
get{
return _name;
}
set{
_name = value;
}
}
可简写为
public String Name{set; get;}
class SubClass : BaseClass{
...
}
c#中,类的继承是单继承,一个类只能继承一个父类。
所有类都直接或间接地继承了Object类。
相当于java中的super。
void sayHello(){
base.sayHello(); //调用父类的sayHello方法
}
Student(string name, int age, string school) : base(name, age){
//调用父类的构造方法,把父类的姓名年龄赋给子类
this.school = school;
}
可作为类型强转的方法,若不能转换,产生的值为null.
Person p1 = new Person();
Student s3 = p1 as Student; //父类不能强转为子类,s3 = null;
与强制类型转换的区别:
if(p is Person) //判断一个对象是不是某个类(及其子类)的实例。
readonly相当于不可改量,只能赋一次值。
在构造方法中赋值,或在声明时就赋值。
sealed类,不可继承。
class 类名 : [父类, ]接口, 接口, ......, 接口{
public 方法(){......}
}
struct是值类型
结构不能包含无参数构造方法
Point p; s.X = 100;
每个字段在定义时,不能给初始值
构造方法中,必须对每个字段进行赋值
struct是sealed的,不能被继承。
引用类型例如string,变量在赋值时,例如s1 = s2,是将s2在堆的引用地址给s1,如果s2的值发生改变,s1也会跟着改变,因为他们指向的是堆里同一个变量。
但是值类型,例如stuct,在变量赋值是,会在堆中复制一个新的变量,并将他的地址给s1,所以如果s2改变,变得只是s2,和s1没有关系。
C#与c++不同,它的任何变量如果要在后面使用,必须要先初始化
Blend for Visual Studio 2019是用于设计界面的,常规学习用Visual Studio 2019就行
c#方法都是大写开头,string类开头是小写,这些都与java相反
svm可以快捷创建Main方法
FromArgb可修改颜色。
button2.BackColor = Color.FromArgb(255, 255, 0);