一.类和结构
(一)结构和类的区别
1. 结构是值类型,值类型直接存储的数值
2. 类是引用类型,引用类型是存储变量的地址
3. 结构不能初始化
4. 类可以初始化
(二)结构和类的定义
1. 结构的定义
Struct 结构名{语句块}
2. 类的定义
Class 类名{语句块}
二、方法的定义及使用
(一)方法的定义
描述类的行为
(二)使用方法的好处
便于修改
增加可读性
可重用
封装等
(三)定义形式
访问修饰符 返回类型 方法名(参数列表)
{
方法语句块
}
参数的值传递:
eg:
static void Main(string[ ] args)
{
int num1 = 5, num2 = 10; // 两个数字
Console.WriteLine("交换前两个数的值分别为:{0}和{1}", num1, num2);
Swap(num1, num2); // 交换两个数的值
Console.WriteLine("交换后两个数的值分别为:{0}和{1}", num1, num2);
}
// 交换两个数的方法
private static void Swap(int num1, int num2)
{
int temp; // 中间变量
temp = num1;
num1 = num2;
num2 = temp;
}
输出结果:
交换前两个数的值分别为:5和10
交换后两个数的值分别为:5和10
值传递不能保留保留参数的修改
传递参数:ref
Ref修饰参数:
定义和调用 | 在参数前使用ref |
在调用方法前 | 作为参数的变量声明并赋值 |
何时使用 | 希望保留参数的更改 |
eg:
static void Main(string[ ] args)
{
Console.WriteLine("交换前两个数的值分别为:{0}和{1}", num1, num2);
// 交换两个数的值
Swap(ref num1, ref num2);
Console.WriteLine("交换后两个数的值分别为:{0}和{1}", num1, num2);
}
// 交换两个数的方法
private static void Swap(ref int num1, ref int num2)
{
int temp; // 中间变量
temp = num1;
num1 = num2;
num2 = temp;
}
三、C#中常用的字符串处理方法:
1. Equals()
比较两个字符串的值是否相等
Eg:
string s = "WanGjun";
string b = "521";
Console.WriteLine(s.Equals(b));
2. Join():
连接字符串
Eg:
string[] a = new string[] { "hiuhjk","gygdghjgf","ghjgjvjhh"};
Console.WriteLine( string.Join("-",a));
3. Split()
分割字符串
Eg:string[] a = new string[] { "hiuhjk","gygdghjgf","ghjgjvjhh"};
string[] bb = s.Split('j');
4. Indexof()
查找某个字符在字符串中的位置
string s = "WanGjun";
Console.WriteLine( s.IndexOf('j',2,3));
5. Substring()
从字符串中截取字符串
string s = "WanGjun";
Console.WriteLine(s.Substring(2,3));
6. ToLower()
将字符串转换成小写形式
string s = "WanGjun";
Console.WriteLine(s.ToLower());
7. Trim()
去除字符串两边的空格
8.“==”和“Equals()”
==和Equals()一致,对值类型比较的是值相等,对于引用类型比较的是两地址是否相等
Format()
Format(“格式字符串”,变量列表)
Eg:
record = string.Format(
"姓名:{0}\n出生年月:{1}\n身高:{2}\n
血型:{3}\n星座:{4}\n最喜欢的食物:{5}",
name, birthday, height, bloodType, planet, favourFood);
Console.WriteLine("\n这是你的个人档案:");
Console.WriteLine(record);
Format()和Console.writeline()用法相似
三、类型转换
(一)隐式转换
对于小转大,会自动转换
Eg:int a=10;
Float b=a;
(二)显式转换
1.强制类型转换
Eg: double a=20.5;
Int b=(int)a;
大转小会导致精度丢失
2.使用Parse()进行转换
字符串和数值型的互相转换
Eg:
int a=Int.Parse(Console.WriteLine());
3.使用Convert.ToXxx(Object value)
任意类型和任意类型之间的转换
String s=”78.9”;
Convert.ToDouble(s);
四、访问修饰符
Public:共有的,所有的类都可以访问
Private:私有的,只有当前类可以访问
Protected:受保护的,当前类和派生类可以访问
Interval:当前程序集可以访问
五、静态与非静态
静态方法只能调用静态方法
解决:
1.加static
2.实例化对象进行调用
非静态方法可以调用静态方法和非静态方法
试卷总结:
填空
取出字符串中的子字符串用:Substring()方法,替换用Replace()方法,分割用Split()方法,
查找其中一项的位置用Indexof()方法,查找其中是否包含用Contains()方法
集合类是由命名空间:Using System.Collections;提供的
C#通过装箱和拆箱机制实现值类型和引用类型之间的转换
定义方法使用的是形参,调用方法使用的是实参
声明一个10行20列的整形二维数组:int[,]a=new int[10,20];
写出下列程序的输出结果
Int[]age=new int[]{16,18,20,14,22};
Foreach(int i in age)
{
If(i>18)
{Continue;}
Console.writeline(i.Tostring()+” ”);;
}
输出结果为:16,18,14
Class Person{
Public int id;
}
Person p1,p2;
Person p1=new Person();
P1.id=10000;
P2=p1;
P2.id=20000;
Console.writeline(p1.id+” ”+p2.id);
输出结果为:20000 20000