C# 类&对象

输入行:

//将从控制台输入的值转换成int类型
int num = int.Parse(Console.ReadLine());

字段:

		private int id;                         //定义私有的整型字段 id
        public readonly string name;            //定义公有的只读字符串类型字段 name
        internal static int age;                //定义内部的静态的整型字段 age
        private const string major = "计算机";  //定义私有的字符串类型常量 major

属性:

//自动属性设置
public int Id{get; set;}
public string Name{get; set;}
public double Price{get; set;}
//如果使用上面的方法来设置属性,则不需要先指定字段。
//如果要使用自动属性的方式来设置属性表示只读属性,直接省略 set 访问器即可。只读属性可以写成如下形式。
public int Id{get;}=1;		//这里相当于将 Id 属性的值设置成 1,并且要以分号结束。
//但是,在使用自动生成属性的方法时不能省略 get 访问器,如果不允许其他类访问属性值,则可以在 get 访问器前面加上访问修饰符 private,代码如下。
public int Id{private get; set;}	//这样,Id 属性的 get 访问器只能在当前类中使用。

类:

		Book book = new Book();
        //为属性赋值
        book.Id = 1;
        book.Name = "计算机基础";
        book.Price = 34.5;
        book.PrintMsg();

lambda表达式:

//lambda表达式
class LambdaClass
{
    public static int Add(int a, int b) => a + b;
}

文章目录

    • 类&对象
      • C#访问修饰符、修饰符
      • C#方法的定义
      • C# get和set访问器:获取和设置字段(属性)的值
      • C#调用类成员
      • C#构造函数(构造方法)
      • C# lambda表达式
      • C# Console类:控制台输入输出
      • C# Math类
      • C# Random类
      • C# DateTime类

类&对象

C#访问修饰符、修饰符

定义类的语法形式

类的访问修饰符    修饰符    类名
{
     类的成员
}
  • 类的访问修饰符:用于设定对类的访问限制,包括 public、internal 或者不写,用 internal 或者不写时代表只能在当前项目中访问类;public 则代表可以在任何项目中访问类。
  • 类的修饰符:修饰符是对类本身特点的描述,包括 abstract、sealed 和 static。abstract 是抽象的意思,使用它修饰符的类不能被实例化;sealed 修饰的类是密封类,不能 被继承;static 修饰的类是静态类,不能被实例化。
  • 类名:类名用于描述类的功能,因此在定义类名时最好是具有实际意义,这样方便用户理解类中描述的内容。在同一个命名空间下类名必须是唯一的。
  • 类的成员:在类中能定义的元素,主要包括字段、属性、方法。

类的访问修饰符主要有两个,即 internal 和 public,如果省略了访问修饰符,即为 internal。
类中成员的访问修饰符有 4 个,具体用法如下

  1. public
    成员可以被任何代码访问。
  2. private
    成员仅能被同一个类中的代码访问,如果在类成员前未使用任何访问修饰 符,则默认为private。
  3. internal
    成员仅能被同一个项目中的代码访问。
  4. protected
    成员只能由类或派生类中的代码访问。派生类是在继承中涉及的,将在后面详细介绍。

定义字段的语法形式:

访问修饰符    修饰符    数据类型    字段名;

字段的定义与前面介绍的变量和常量的定义类似,只是在变量或常量前面可以加上访问修饰符、修饰符。
在修饰字段时通常用两个修饰符,即readonly (只读)和static (静态的)。
使用 readonly 修饰字段意味着只能读取该字段的值而不能给字段赋值。
使用 static 修饰的字段是静态字段,可以直接通过类名访问该字段。
需要注意的是常量不能使用 static 修饰符修饰。
在这里访问修饰符和修饰符都是可以省略的,并且访问修饰符和修饰符的位置也可以互换,但从编码习惯上来说通常将访问修饰符放到修饰符的前面。此外,在类中定义字段时字段名是唯一的。

字段在类中定义完成后,在类加载时,会自动为字段赋值,不同数据类型的字段默认值不同, 如下表所示。

数据类型 默认值
整数类型 0
浮点型 0
字符串类型 空值
字符型 a
布尔型 False
其他引用类型 空值

C#方法的定义

定义方法的语法形式:

访问修饰符    修饰符    返回值类型    方法名(参数列表)
 {
     语句块;
 }
  1. 访问修饰符
    所有类成员访问修饰符都可以使用,如果省略访问修饰符,默认是 private。
  2. 修饰符
    在定义方法时修饰符包括 virtual(虚拟的)、abstract(抽象的)、override(重写的)、static(静态的)、sealed(密封的)。override 是在类之间继承时使用的。
  3. 返回值类型
    用于在调用方法后得到返回结果,返回值可以是任意的数据类型,如果指定了返回值类型,必须使用 return 关键字返回一个与之类型匹配的值。如果没有指定返回值类型,必须使用 void 关键字表示没有返回值。
  4. 方法名
    对方法所实现功能的描述。方法名的命名是以 Pascal 命名法为规范的。
  5. 参数列表
    在方法中允许有 0 到多个参数,如果没有指定参数也要保留参数列表的小括号。参数的定义形式是“数据类型参数名”,如果使用多个参数,多个参数之间需要用逗号隔开。

C# get和set访问器:获取和设置字段(属性)的值

属性经常与字段连用,并提供了 get 访问器和 set 访问器,分别用于获取或设置字段的值。
get 访问器和 set 访问器的使用与方法非常类似,可以在操作字段时根据一些规则和条件来设置或获取字段的值。
此外,为了保证字段的安全性,还能选择省去 get 访问器或 set 访问器。

定义属性的语法形式:

public    数据类型    属性名
{
     get
     {
         获取属性的语句块;
         return;
     }
     set
     {
         设置属性得到语句块;
     }
 }

在定义字段属性时,属性的作用就是为字段提供 get、set 访问器

public    数据类型    属性名{get;set;}
  1. get{}
    get 访问器,用于获取属性的值,需要在 get 语句最后使用 return 关键字返回一个与属性数据类型相兼容的值。
    若在属性定义中省略了该访问器,则不能在其他类中获取私有类型的字段值,因此也称为只写属性。

  2. set{}
    set 访问器用于设置字段的值,这里需要使用一个特殊的值 value,它就是给字段赋的值。
    在 set 访问器省略后无法在其他类中给字段赋值,因此也称为只读属性。

C#调用类成员

创建类对象的语法 形式如下。
调用的语法形式如下。

类名对象名 = new 类名();

对象名.类的成员

如果将类中的成员使用修饰符 static 声明,则在访问类成员时直接使用“类名.类成员”的方式即可。
需要注意的是,如果将一个方法声明成静态的,在方法中只能直接访问静态类成员,非静态成员通过类的对象调用才能访问。

class Book
{
    public static int Id { get; set; }
    public static string Name { get; set; }
    public static double Price { get; set; }

    public static void SetBook(int id, string name, double price)
    {
        Id = id;
        Name = name;
        Price = price;
    }
    public static void PrintMsg()
    {
        Console.WriteLine("图书编号:" + Id);
        Console.WriteLine("图书名称:" + Name);
        Console.WriteLine("图书价格:" + Price);
    }
}

//在 Main 方法中调用静态方法的代码如下。
class Program
{
    static void Main(string[] args)
    {
        Book.SetBook(1, "计算机基础", 34.5);
        Book.PrintMsg();
    }
}

C#构造函数(构造方法)

构造方法的定义语法形式如下

访问修饰符  类名 (参数列表)
 {
     语句块;
}

这里构造方法的访问修饰符通常是public类型的,这样在其他类中都可以创建该类的对象。
如果将访问修饰符设置成private类型的,则无法创建该类的对象。构造方法中的参数与其他方法一样,都是 0 到多个参数。
此外,构造方法是在创建类的对象时被调用的。通常会将一些对类中成员初始化的操作放到构造方法中去完成。

C# lambda表达式

具体的语法形式如下。

访问修饰符    修饰符    返回值类型    方法名(参数列表) => 表达式;

这里需要注意的是,如果在方法定义中定义了返回值类型,在表达式中不必使用 return 关键字,只需要计算值即可。
这种形式只能用在方法中只有一条语句的情况下,方便方法的书写。

C# Console类:控制台输入输出

Console 类中常用方法

方法 描述
Write 向控制台输出内容后不换行
WriteLine 向控制台输出内容后换行
Read 从控制台上读取一个字符
ReadLine 从控制台上读取一行字符

此外,在向控制台中输出内容时也可以对输出的内容进行格式化,格式化时使用的是占位符的方法,语法形式如下。

Console.Write(格式化字符串, 输出项1, 输出项2);

其中,在格式化字符串中使用{索引号}的形式,索引号从 0 开始。输出项 1 填充 {0} 位置的内容,依此类推。

C# Math类

C# Math 类主要用于一些与数学相关的计算,并提供了很多静态方法方便访问,常用的方法如下表所示。

方法 描述
Abs 取绝对值
Ceiling 返回大于或等于指定的双精度浮点数的最小整数值
Floor 返回小于或等于指定的双精度浮点数的最大整数值
Equals 返回指定的对象实例是否相等
Max 返回两个数中较大数的值
Min 返回两个数中较小数的值
Sqrt 返回指定数字的平方根
Round 返回四舍五入后的值

C# Random类

C# Random 类是一个产生伪随机数字的类,它的构造函数有两种。

New Random()New Random(Int32)

前者是根据触发那刻的系统时间做为种子,来产生一个随机数字,后者可以自己设定触发的种子,一般都是用 UnCheck((Int)DateTime.Now.Ticks) 做为参数种子。

Random 类中提供的 Next、NextBytes 以及 NextDouble 方法可以生成整数类型、byte 数组类型以及双精度浮点型的随机数,详细说明如下表所示。

方法 描述
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) 用随机数填充指定字节数的数组

C# DateTime类

C# DateTime 类用于表示时间,所表示的范围是从 0001 年 1 月 1 日 0 点到 9999 年 12 月 31 日 24 点。
在 DateTime 类中提供了静态属性 Now,用于获取当前的日期和时间,如下所示。

DateTime.Now

DateTime 类提供了 12 个构造方法来创建该类的实例,但经常使用不带参数的方法创建 DateTime 类的实例。

在 DateTime 类中提供了常用的属性和方 法用于获取或设置日期和时间,如下表所示。

方法 描述
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

两个日期的差可由时间间隔类 TimeSpan 的对象来存放。假设计算现在距离2018年6月1日儿童节的天数,代码如下。

class Program
{
    static void Main(string[] args)
    {
        DateTime dt1 = DateTime.Now;
        DateTime dt2 = new DateTime(2019, 6, 1);
        TimeSpan ts = dt2 - dt1;
        Console.WriteLine("间隔的天数为{0}天", ts.Days);
    }
}

你可能感兴趣的:(C#)