编写第一个C#程序
一般步骤:新建项目->编写代码->运行
示例:输出“hello world”
using System;
namespace Demo
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!"); //输出内容需要加双引号
Console.WriteLine("人因梦想而伟大"); //可以是中文
Console.ReadLine(); //页面暂定
}
}
}
学语法之前必备基础知识
1.命名空间
概念:C#程序中的一种代码组织形式,主要用来标识类的可见范围
语法: namespace 命名空间名称 //后者一般自动生成
引用:using 命名空间名;//分号不可少
2.类
概念:一种数据结构,存储数据成员,方法成员和其他类等内容,便于调用
语法
class 类名
{
//代码
}
3.C#中常见关键字:
4.标识符:类名,变量名,方法名,数组名…
首字母必须是字母或下划线,其余部分可以是数字,字母或下划线,标识符不可以与关键字冲突
5.Main方法的要求
- Mian方法必须定义为
static
- Main的首字母必须大写
- 返回值可以是
void
或int
- 命令行参数可选
语法
6.注释
- 行注释
// 注释内容 - 块注释
/* 注释内容 */
7.代码编写规则
8.数据类型
注: 值类型即直接存储值
整数类型:
注:u
是unsigned
的缩写
浮点类型:
注:需要在数值后面加 f, d 或 F, D。如果没有加默认为double类型
如果没有初始化,默认为== 0==,而不是 0.0
decimal类型
定义:表示128位数据类型,是一种精度更高的浮点类型,其精度可以达到28位,取值范围为 ±1.0X10-28 ~ ±7.9X1028
如果希望一个小数被当作decimal
类型使用,需要使用 后缀 m 或 M
注:由于decimal
类型的 高精度 特性,它更适于财务和货币计算
bool类型:
布尔类型主要用来表示true/false值,C#中定义布尔类型时,需要使用bool关键字
注:bool类型的默认值时false
字符类型
在C#语言中,使用char/Char类定义字符,并且字符需用单引号括起来
转义字符:
转义字符是一种特殊的字符变量,其以反斜线 " \ " 开头,后跟一个或多个字符。转义字符具有特定的含义,不同于字符原有的意义,故称”转义“。
如果需要多次输出 \,可以在输出语句前加@
,避免多次使用 \\
例如:
Console.WriteLine(@"Win\Micro\Frame\v4.30\2025");//两个语句等价
Console.WriteLine("Win\\Micro\\Frame\\v4.30\\2025");
变量的初始化
赋值运算符=
:将右边的数赋值给左边的变量
常量的分类
定义:不能被改变的量
- 编译时常量:
const
const double pai = 3.14;//必须初始化
- 运行时常量:
readonly
在定义时可以初始化也可以不初始化
不同于C语言的知识点
C# 封装
封装被定为义为 “把一个或多个项目封闭在一个物理的或者逻辑的包中”。在面向对象程序设计方法论中,封装是为了防止对实现细节的访问。
抽象和封装是面向对象程序设计的相关特性。抽象允许相关信息可视化,封装使程序员实现所需级别的抽象。
封装使用访问修饰符来实现。一个访问修饰符定义了一个类成员的范围和可见性。C# 支持的访问修饰符如下所示:
- Public
- Private
- Protected
- Internal
- Protected internal
Public 访问修饰符
Public 访问修饰符允许一个类将其成员变和成员函数暴露给其他的函数和对象。任何公有成员可以被外部的类访问。
下面的例子说明了这点:
using System;
namespace RectangleApplication
{
class Rectangle
{
//成员变量
public double length;
public double width;
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("长度: {0}", length);
Console.WriteLine("宽度: {0}", width);
Console.WriteLine("面积: {0}", GetArea());
}
}//end class Rectangle
class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.length = 4.5;
r.width = 3.5;
r.Display();
Console.ReadLine();
}
}
}
编译执行上述代码,得到如下结果:
长度: 4.5
宽度: 3.5
面积: 15.75
在上面的例子中,成员变量 length
和 width
被声明为 public
,所以它们可以被函数 Main()
使用 Rectangle
类的实例 r 访问。
成员函数 Display()
和 GetArea()
也可以不通过类的实例直接直接访问这些变量。
成员函数 Display()
也被声明为 public
,所以从它也能被 Main()
使用 Rectangle
类的实例 r 访问。
Private 访问修饰符
Private 访问修饰符允许一个类将其成员变量和成员函数对其他的函数和对象进行隐藏。只有同一个类中的函数可以访问它的私有成员。 即使是类的实例也不能访问它的私有成员。
下面的例子说明了这点:
using System;
namespace RectangleApplication
{
class Rectangle
{
//成员变量
private double length;
private double width;
public void Acceptdetails()
{
Console.WriteLine("请输入长度: ");
length = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("请输入宽度: ");
width = Convert.ToDouble(Console.ReadLine());
}
public double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("长度: {0}", length);
Console.WriteLine("宽度: {0}", width);
Console.WriteLine("面积: {0}", GetArea());
}
}//end class Rectangle
class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.Acceptdetails();
r.Display();
Console.ReadLine();
}
}
}
编译执行上述代码,得到如下结果:
请输入长度:
4.4
请输入宽度:
3.3
长度: 4.4
宽度: 3.3
面积: 14.52
在上面的例子中,成员变量 length
和 width
被声明为 private
,所以它们不能被函数 Main() 访问。成员函数 AcceptDetails() 和 Display() 可以访问这些变量。由于成员函数 AcceptDetails() 和 Display() 被声明为 public
,所以它们可以被 Main() 函数使用 Rectangle
类的实例 r 访问。
Protected 访问修饰符
Protected 访问修饰符允许子类访问它的基类的成员变量和成员函数。这种方式有助于实现继承。
Internal 访问修饰符
Internal 访问修饰符允许一个类将其成员变量和成员函数暴露给当前程序中的其他函数和对象。换句话说,带有 Internal 访问修饰符的任何成员可以被定义在该成员所定义的应用程序内的任何类或方法访问。
下面的例子说明了这点:
using System;
namespace RectangleApplication
{
class Rectangle
{
//成员变量
internal double length;
internal double width;
double GetArea()
{
return length * width;
}
public void Display()
{
Console.WriteLine("长度: {0}", length);
Console.WriteLine("宽度: {0}", width);
Console.WriteLine("面积: {0}", GetArea());
}
}//end class Rectangle
class ExecuteRectangle
{
static void Main(string[] args)
{
Rectangle r = new Rectangle();
r.length = 4.5;
r.width = 3.5;
r.Display();
Console.ReadLine();
}
}
}
编译执行上述代码,得到如下结果:
长度: 4.5
宽度: 3.5
面积: 15.75
在上面的例子中,请注意成员函数 GetArea() 声明的时候不带有任何访问修饰符。如果没有指定访问修饰符,则使用类成员的默认访问修饰符,即为 private
。
Protected internal 访问修饰符
Protected internal 访问修饰符允许一个类将其成员变量和成员函数对同一应用程内的子类以外的其他的类对象和函数进行隐藏。这也被用于实现继承。