输入行:
//将从控制台输入的值转换成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;
}
定义类的语法形式
类的访问修饰符 修饰符 类名
{
类的成员
}
类的访问修饰符主要有两个,即 internal 和 public,如果省略了访问修饰符,即为 internal。
类中成员的访问修饰符有 4 个,具体用法如下
定义字段的语法形式:
访问修饰符 修饰符 数据类型 字段名;
字段的定义与前面介绍的变量和常量的定义类似,只是在变量或常量前面可以加上访问修饰符、修饰符。
在修饰字段时通常用两个修饰符,即readonly (只读)和static (静态的)。
使用 readonly 修饰字段意味着只能读取该字段的值而不能给字段赋值。
使用 static 修饰的字段是静态字段,可以直接通过类名访问该字段。
需要注意的是常量不能使用 static 修饰符修饰。
在这里访问修饰符和修饰符都是可以省略的,并且访问修饰符和修饰符的位置也可以互换,但从编码习惯上来说通常将访问修饰符放到修饰符的前面。此外,在类中定义字段时字段名是唯一的。
字段在类中定义完成后,在类加载时,会自动为字段赋值,不同数据类型的字段默认值不同, 如下表所示。
数据类型 | 默认值 |
---|---|
整数类型 | 0 |
浮点型 | 0 |
字符串类型 | 空值 |
字符型 | a |
布尔型 | False |
其他引用类型 | 空值 |
定义方法的语法形式:
访问修饰符 修饰符 返回值类型 方法名(参数列表)
{
语句块;
}
属性经常与字段连用,并提供了 get 访问器和 set 访问器,分别用于获取或设置字段的值。
get 访问器和 set 访问器的使用与方法非常类似,可以在操作字段时根据一些规则和条件来设置或获取字段的值。
此外,为了保证字段的安全性,还能选择省去 get 访问器或 set 访问器。
定义属性的语法形式:
public 数据类型 属性名
{
get
{
获取属性的语句块;
return 值;
}
set
{
设置属性得到语句块;
}
}
在定义字段属性时,属性的作用就是为字段提供 get、set 访问器
public 数据类型 属性名{get;set;}
get{}
get 访问器,用于获取属性的值,需要在 get 语句最后使用 return 关键字返回一个与属性数据类型相兼容的值。
若在属性定义中省略了该访问器,则不能在其他类中获取私有类型的字段值,因此也称为只写属性。
set{}
set 访问器用于设置字段的值,这里需要使用一个特殊的值 value,它就是给字段赋的值。
在 set 访问器省略后无法在其他类中给字段赋值,因此也称为只读属性。
创建类对象的语法 形式如下。
调用的语法形式如下。
类名对象名 = 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();
}
}
构造方法的定义语法形式如下
访问修饰符 类名 (参数列表)
{
语句块;
}
这里构造方法的访问修饰符通常是public类型的,这样在其他类中都可以创建该类的对象。
如果将访问修饰符设置成private类型的,则无法创建该类的对象。构造方法中的参数与其他方法一样,都是 0 到多个参数。
此外,构造方法是在创建类的对象时被调用的。通常会将一些对类中成员初始化的操作放到构造方法中去完成。
具体的语法形式如下。
访问修饰符 修饰符 返回值类型 方法名(参数列表) => 表达式;
这里需要注意的是,如果在方法定义中定义了返回值类型,在表达式中不必使用 return 关键字,只需要计算值即可。
这种形式只能用在方法中只有一条语句的情况下,方便方法的书写。
Console 类中常用方法
方法 | 描述 |
---|---|
Write | 向控制台输出内容后不换行 |
WriteLine | 向控制台输出内容后换行 |
Read | 从控制台上读取一个字符 |
ReadLine | 从控制台上读取一行字符 |
此外,在向控制台中输出内容时也可以对输出的内容进行格式化,格式化时使用的是占位符的方法,语法形式如下。
Console.Write(格式化字符串, 输出项1, 输出项2);
其中,在格式化字符串中使用{索引号}的形式,索引号从 0 开始。输出项 1 填充 {0} 位置的内容,依此类推。
C# Math 类主要用于一些与数学相关的计算,并提供了很多静态方法方便访问,常用的方法如下表所示。
方法 | 描述 |
---|---|
Abs | 取绝对值 |
Ceiling | 返回大于或等于指定的双精度浮点数的最小整数值 |
Floor | 返回小于或等于指定的双精度浮点数的最大整数值 |
Equals | 返回指定的对象实例是否相等 |
Max | 返回两个数中较大数的值 |
Min | 返回两个数中较小数的值 |
Sqrt | 返回指定数字的平方根 |
Round | 返回四舍五入后的值 |
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 类用于表示时间,所表示的范围是从 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);
}
}