类访问修饰符 修饰符 类名 {
类的成员 }
- 类访问修改符:用于设置类访问限制 public:访问不受限制,可以在类内和任何类外代码中访问 protected:可访问域仅限于类或从这类衍生类 internal:可访问域仅限于类所在的程序集 private:可访问域仅限于其类别
- 修饰符:修饰符是对类本身特征的描述 abstract:这意味着抽象。使用它修饰符的类别不能实例化 sealed:密封,不能继承 static:静态类不能实例化
- 类名:类名必须是同一命名空间中唯一的
- 类成员:可以在类中定义的元素主要包括字段、属性和方法
访问修饰符 修饰符 返回值类型 方法名(参数列表) {
语句块; }
- 访问修饰符: 默认是 private
- 修饰符: virtual(虚拟),abstract(抽象),override(重写),static(静态),sealed(密封的)
- 返回值类型: 用于调用方法后获得返回结果。返回值可以是任何数据类型。如果指定了返回值类型,则必须使用它 return关键字返回匹配类型的值。如果没有指定的返回值类型,则必须使用它 void 关键字表示没有返回值。
- 方法名: 描述方法实现的功能。
- 参数列表: 允许有方法 0到多个参数,如果没有指定的参数,请保留参数列表的小括号。参数的定义形式是数据类型参数名。如果使用多个参数,则需要在多个参数之间使用逗号。
public 数据类型 属性名 {
get {
获取属性的句块; return 值; } set {
设置属性以获得句块; } }
- 简化写法:
public 数据类型 属性名{
get;set;}
- 语法创建对象:
类名对象名 = new 类名();
- 调用类成员:
对象名 . 类的成员
访问修饰符 类名 (参数列表) {
语句块; }
- 访问修饰符: 访问修饰符的结构方法通常是public这种对象可以在其他类别中创建。
~类名() {
语句块; }
- 在分析方法中没有参数,实际上是为了保证垃圾回收方法在程序中被调用 Finalize()。
class SumUtils {
public int Sum(int a,int b) {
return a b; } public double Sum(double a,double b)
{
return a + b;
}
public string Sum(string a,string b)
{
return a + b;
}
public int Sum(int a)
{
int sum = 0;
for(int i = 1; i < a; i++)
{
sum += i;
}
return sum;
}
}
- 参数列表不同主要体现在参数个数或参数的数据类型不同。在调用重载的方法时系统是根据所传递参数的不同判断调用的是哪个方法。
- 方法中的参数分为实际参数和形式参数,实际参数被称为实参,是在调用方法时传递的参数;形式参数被称为形参,是在方法定义中所写的参数。
public int Add(int a,int b)
{
return a+b;
}
- 在上面的方法定义中,a 和 b 是形式参数
public void Print()
{
Add(3,4);
}
- 在调用 Add 方法时传递的参数 3 和 4 即为实际参数
- 方法中的参数除了定义数据类型外,还可以定义引用参数和输出参数。引用参数使用 ref 关键字定义,输出参数使用 out 关键字定义。
class RefClass
{
public bool Judge(ref int num)
{
if (num % 5 == 0)
{
return true;
}
return false;
}
}
//在 Main 方法中调用 Judge 方法,代码如下。
class Program
{
static void Main(string[] args)
{
RefClass refClass = new RefClass();
int a = 20;
bool result = refClass.Judge(ref a);
Console.WriteLine("验证结果是:" + result);
}
}
- 从该实例中可以看出,在调用带有引用参数的方法时,实际参数必须是一个变量,并且在传值时必须加上 ref 关键字。
- 引用参数与我们平时使用的参数有些类似,但输出参数不同,输出参数相当于返回值,即在方法调用完成后可以将返回的结果存放到输出参数中。
- 输出参数多用于一个方法需要返回多个值的情况。需要注意的是,在使用输出参数时,必须在方法调用完成前为输出参数赋值。
class OutClass
{
public void Judge(int num, out bool result)
{
if (num % 5 == 0)
{
result = true;
}
else
{
result = false;
}
}
}
//在 Main 中调用该方法,代码如下。
class Program
{
static void Main(string[] args)
{
OutClass outClass = new OutClass();
bool rs;
outClass.Judge(20, out rs);
Console.WriteLine(rs);
}
}
- 从该实例中可以看出,在使用输出参数时,必须在方法操作结束前为带输出参数的形式参数赋值。
- 在调用含有带输出参数的方法时,必须在传递参数时使用 out 关键字,但不必给输出参数赋值。
访问修饰符 修饰符 返回值类型 方法名(参数列表) => 表达式;
- 这里需要注意的是,如果在方法定义中定义了返回值类型,在表达式中不必使用 return 关键字,只需要计算值即可。
class LambdaClass
{
public static int Add(int a, int b) => a + b;
}
//在 Main 方法中调用,代码如下。
class Program
{
static void Main(string[] args)
{
Console.WriteLine(LambdaClass.Add(100, 200));
}
}
//使用递归实现计算所输入数的阶乘。
class FactorialClass
{
public static int Factorial(int n)
{
if(n == 0)
{
return 1;
}
return n * Factorial(n - 1);
}
}
//在 Main 方法中调用,代码如下。
class Program
{
static void Main(string[] args)
{
int num = 5;
int res = FactorialClass.Factorial(num);
Console.WriteLine(num + " 的阶乘等于:" + res);
Console.Read();
}
}
- 在类中除了能编写前面提到的类成员以外,还能直接定义类。将一个类定义在另一个类的内部,即可将在类内部定义的类称为嵌套类。
- 在 C# 中嵌套类相当于类中的成员,能使用类成员的访问修饰符和修饰符。但是,在访问嵌套类中的成员时必须加上外层类的名称。
class OuterClass
{
//嵌套类(内部类)
public class InnerClass
{
public string CardId {
get; set; }
public string Password {
get; set; }
public void PrintMsg()
{
Console.WriteLine("卡号为:" + CardId);
Console.WriteLine("密码为:" + Password);
}
}
}
//在 Main 方法中调用嵌套类的成员,代码如下。
class Program
{
static void Main(string[] args)
{
OuterClass.InnerClass innerClass = new OuterClass.InnerClass();
innerClass.CardId = "S3547";
innerClass.Password = "123456";
innerClass.PrintMsg();
Console.Read();
}
}
访问修饰符 修饰符 partial class 类名{……}
- 在这里,partial 即为定义部分类的关键字。部分类主要用于当一个类中的内容较多时将相似类中的内容拆分到不同的类中,并且部分类的名称必须相同。
public partial class Course
{
public int Id {
get; set; }
public string Name {
get; set; }
public double Points {
get; set; }
}
public partial class Course
{
public void PrintCoures()
{
Console.WriteLine("课程编号:" + Id);
Console.WriteLine("课程名称:" + Name);
Console.WriteLine("课程学分:" + Points);
}
}
//在 Main 方法中为属性赋值并调用 PrintCourse 方法,代码如下。
class Program
{
static void Main(string[] args)
{
Course course = new Course();
course.Id = 1001;
course.Name = "信息部";
course.Points = 3;
course.PrintCoures();
Console.Read();
}
}
- Console.Write(格式化字符串, 输出项, 输出项2);
- 其中,在格式化字符串中使用{索引号}的形式,索引号从 0 开始。输出项 1 填充 {0} 位置的内容,依此类推。
- Write 向控制台输出内容后不换行
- WriteLine 向控制台输出内容后换行
- Read 从控制台上读取一个字符
- ReadLine 从控制台上读取一行字符
- Abs 取绝对值
- Ceiling 返回大于或等于指定的双精度浮点数的最小整数值
- Floor 返回小于或等于指定的双精度浮点数的最大整数值
- Equals 返回指定的对象实例是否相等
- Max 返回两个数中较大数的值
- Min 返回两个数中较小数的值
- Sqrt 返回指定数字的平方根
- Round 返回四舍五入后的值
- Next() 每次产生一个不同的随机正整数
- Next(int max Value) 产生一个比 max Value 小的正整数
- Next(int min Value,int max Value) 产生一个 minValue~maxValue 的正整数,但不包含 maxValue
- NextDouble() 产生一个0.0~1.0的浮点数
- NextBytes(byte[] buffer) 用随机数填充指定字节数的数组
在 DateTime 类中提供了静态属性 Now,用于获取当前的日期和时间,如下所示。
DateTime.Now
- Date 获取实例的日期部分
- Day 获取该实例所表示的日期是一个月的第几天
- DayOfWeek 获取该实例所表示的日期是一周的星期几
- DayOfYear 获取该实例所表示的日期是一年的第几天
- Add(Timespan value) 在指定的日期实例上添加时间间隔值 value
- AddDays(double value) 在指定的日期实例上添加指定天数 value
- AddHours(double value) 在指定的日期实例上添加指定的小时数 value
- AddMinutes(double value) 在指定的日期实例上添加指定的分钟数 value
- AddSeconds(double value) 在指定的日期实例上添加指定的秒数 value
- AddMonths(int value) 在指定的日期实例上添加指定的月份 value
- AddYears (int value) 在指定的日期实例上添加指定的年份 value