写在前面:本系列文章将以C++为基础,记录学习过程中与其不同的部分
1、程序入口
以 static void Main(string[] args)为入口,一个类一个文件
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
//DEMO;
}
}
}
2、类的定义
创建一个类文件(*.cs)之后,编译器会自动生成一个模板如图
当然也可以这样(不推荐)
3、访问修饰符/修饰符
类中成员的访问修饰符有 4 个
- public
成员可以被任何代码访问 - private
成员仅能被同一个类中的代码访问,如果在类成员前未使用任何访问修饰 符,则默认为private - internal
成员仅能被同一个项目中的代码访问 - protected
成员只能由类或派生类中的代码访问
修饰字段时通常用两个修饰符,即readonly (只读)和static (静态的)。
使用 readonly 修饰字段意味着只能读取该字段的值而不能给字段赋值。
使用 static 修饰的字段是静态字段,可以直接通过类名访问该字段。
一般采用:
访问修饰符 修饰符 数据类型 字段名;
4、方法定义
访问修饰符 修饰符 返回值类型 方法名(参数列表)
{
语句块;
}
修饰符包括:(暂且不讨论其具体作用)
virtual(虚拟的)、abstract(抽象的)、override(重写的)、static(静态的)、sealed(密封的)
5、get,set访问器
属性经常与字段连用,get和set访问器,分别用于获取或设置字段的值。
public 数据类型 属性名
{
get
{
获取属性的语句块;
return 值;
}
set
{
设置属性得到语句块;
}
}
不说直接上代码
这是由编译器自动封装产生的代码,目前我的理解是实现了对象的封装的一种途径,把内部的private的属性封装为外部可以访问的方法。
6、调用类成员
创建对象和调用成员和C++大同小异(几乎相同)
Class class=new Class();
class.Id=1;//属性
class.output();//方法
7、方法的参数
形参和实参在调用和传递上和C++相同
但是其中多了两种 引用参数ref 和输出参数out
在调用带有引用参数的方法时,实际参数必须是一个变量,并且在传值时必须加上 ref 关键字
在使用输出参数时,必须在方法操作结束前为带输出参数的形式参数赋值
在定义参数的前面加关键词即可
public void Judge(ref int num, out bool result)
{
if (num % 5 == 0)
{
result = true;
}
else
{
result = false;
}
主函数:
Class.Judge(20, out rs);
8、lambda表达式
这是一种为了方便编程的表达式
访问修饰符 修饰符 返回值类型 方法名(参数列表) => 表达式;
class LambdaClass
{
public static int Add(int a, int b) => a + b;
}
9、嵌套类
在类中定义类
class OuterClass
{
public class InnerClass
{
public string CardId { get; set; }
public string Password { get; set; }
}
}
用外部类.嵌套类的方式调用
10、partial部分类
就是字面上的意思,就是一个类的一部分,部分类主要用于当一个类中的内容较多时将相似类中的内容拆分到不同的类中,并且部分类的名称必须相同
一个类可以由多个部分类构成,定义部分类的语法形式 如下。
访问修饰符 修饰符 partial class 类名{……}
11、Console类,控制台输入输出
Console 类中常用方法
Write 向控制台输出内容后不换行
WriteLine 向控制台输出内容后换行
Read 从控制台上读取一个字符
ReadLine 从控制台上读取一行字符
Console.Write(格式化字符串, 输出项, 输出项2);
其中,在格式化字符串中使用{索引号}的形式,索引号从 0 开始。输出项 1 填充 {0} 位置的内容,依此类推。
Console.WriteLine("请输入学生姓名:");
string name = Console.ReadLine();
Console.WriteLine("请输入所在学校:");
string school = Console.ReadLine();
Console.WriteLine("{0}同学在{1}学习", name, school);
12、Random类,DateTime类等等…