c#类、方法
·
1.类和对象
internal class Program
{
static void Main(string[] args)
{
//类:对象的模板或者对象蓝图,具有相同属性和方法的集合
//对象:类的实例化
//类的作用:定义属性、字段、方法 通过类构建对象的作用
//对象作用:给具体对象的属性和字段赋值 以及调用方法
//类:人类 人类都包含:年龄、性别 吃喝拉撒行为
//对象:张三 李四
//创建对象:类名 对象名 = new 类名()
Student zhangsan = new Student();
//对象属性赋值 对象.属性=值
zhangsan.Name = "张三";
zhangsan.Age = 1;
zhangsan.Sex = "男";
//访问对象属性 对象.属性=值
Console.WriteLine(zhangsan.Age);
//创建对象 对象赋值的第二种方式
Student list = new Student() { Name = "李四",Age = 20,Sex = "女"};
Console.WriteLine(list.Name);
//创建多个对象
string s = "";
for (int i = 0; i < 10; i++)
{
//创建对象
Student s1 = new Student();
s1.Name = "学生" + i +"号";
s1.Age = i*20;
s1.Sex = i % 2 == 0 ? "男" : "女";
s += s1.Name + ":" + s1.Age + ":" + s1.Sex + "\n";
}
Console.WriteLine(s);
}
}
//定义类:public class Student
//一般修饰符选择 public/internal
//class类的关键字
//Student 类名大驼峰命名法则
//public修饰符:公共的公开的类
//private 私有的类
//internal 内部的修饰
//protected 受保护的
public class Student
{
private int _age; //字段:在类内部使用时候一般定义成字段并且为私有的,并且名字一般添加_单词首字母小写
//属性:定义公共的 并且首字母要大写,并且加上set和get访问器,属性一般对外调用。
//属性内部本质是访问内部私有的字段
public int Age { get; set; } //带get set属于属性
public string Name { get; set; }
public string Sex { get; set; }
}
2.值类型和引用类型
internal class Program
{
static void Main(string[] args)
{
//值类型:变量存储值本身,存在栈空间中,在赋值过程中,把值本身复制拷贝一份,把拷贝一份给新变量了,在去修改
//其中一个时候 ,另外一个不会受影响
//值类型:int float double bool char long uint sbyte ushort ulong 枚举 结构体类型
int a = 10;
int b = a;//出现赋值过程, 把值拷贝了一份赋值b,b当成副本
a = 30;
Console.WriteLine(b);
//引用类型:变量存储的对象的引用,或者说变量保存是内存地址,存储在堆空间, 在赋值过程中把内存地址复制一份,新变量和之前变量内存地址一样
//这俩个变量是指向同一个内存地址,再去修改其中一个另一个会被修改。
//引用类型:string(特殊的引用类型)、class 、数组、集合 Random等
//创建对象
Book b1 = new Book();
b1.Name = "明朝那些事";
Book b2 = b1;//赋值过程
b2.Name = "清朝";
Console.WriteLine(b1.Name);// 清朝
}
}
public class Book
{
public string Name { get; set; }
}
3.方法的定义和调用
internal class Program
{
//都是在Program里面去定义和调用
static void Main(string[] args)
{
Console.WriteLine("hello world");//"hello world"实参:在调用方法传递的实际的值
//实参:在调用方法传递的实际值
//形参:在定义方法时候小括号里面(int a)a就是形参,形式上参数。
//返回值:是方法的具体结果
//Console.WriteLine(); 有结果的方法
//string name = Console.ReadLine();
//方法:把相关功能的代码添加到一个方法体里面,以后有需要相关功能的时候,只需要调用方法即可,
//减少代码重复率 可以定义方法时候带参数,在调用的时候把实参传递方法里面形参,可以通过形参实现不同功能
//方法也可以通过返回值把方法结果拿到其他地方去使用
//方法包含:1.方法的定义 2.方法的调用
//2.方法调用
//如果方法是static 使用类名打点去调用
//如果方法是没有static 使用对象.调用,前提先new一个对象
Program.Test();//调用方法的时候会把方法里面全部执行一遍
Test();//可以把类名省掉
}
//1.定义方法
//public 方法修饰符,一般定义公共的
//static 静态的方法,不写static 非静态方法
//void 方法的返回值,无返回值 不能赋值给一个变量
//Test 方法名字 符合大驼峰命名法则
//{int a,int b} 参数列表
//{}方法体
public static void Test()
{
Console.WriteLine("清清");
}
}
4.方法的参数
internal class Program
{
static void Main(string[] args)
{
//调用方法 把实参值传递给形参
Test("清清");//清清属于实参
//Test(749);//参数是什么类型 决定传入实参类型
string name = "紫幻";
Test(name);//传递一个变量
//调用两个参数Test1方法
Test1(10, "清清1");
//调用Test2方法
Dog d1 = new Dog() { Name = "豆豆",Age = 1};
Test2(d1);
//调用Test3方法
Test3(5, "清清");//不传默认参数的情况 默认参数值是定以时候写的值
Test3(5, "暖阳", "北京WB");
}
//定义一个静态的 无返回值的 带一个参数的方法
//name 形参
public static void Test(string name)
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(name);
}
}
//要求次数不定 名字不定 需要传递多个参数
public static void Test1(int count ,string name)
{
for (int i = 0; i < count; i++)
{
Console.WriteLine(name);
}
}
public static void Test2(Dog d1)
{
for (int i = 0; i < 10; i++)
{
Console.WriteLine(d1.Name+":"+d1.Age);
}
}
//传递三个参数 个数 姓名 默认值是狼队
//zd 这个形参有一个默认值 如果传递实参,就是实参的值,不传的实参,zd就是默认值
//默认参数只能写在最后面
public static void Test3(int count, string name, string zd = "狼队")
{
for (int i = 0; i < count; i++)
{
Console.WriteLine(name+"是"+zd+"的");
}
}
}
//定义类
public class Dog
{
public string Name { get; set; }
public int Age { get; set; }
}
更多推荐
所有评论(0)