C#程序入门

目录

搭建开发环境

C#基本语法

C#数据类型

运算符

条件语句

循环语句

面向对象基础


搭建开发环境

下载Visual Studio 安装Visual Studio 设置Visual Studio

创建Visual Studio项目 运行Visual Studio项目

复制代码
namespace HelloProj                             // 声明命名空间			
{
    internal class Program                      // 声明类Program			
    {
        static void Main(string[] args)         //声明主方法,程序入口		
        {
            Console.WriteLine("Hello, World!"); // 打印字符串到控制台		
        }
    }
}

C#语言历史

1990年代微软为解决通信问题开发COM技术 COM开发中,微软需要新语言,开始了C#开发 结合C++效率和Java安全,用于现代.NET应用 安德斯·海尔斯伯格,C#主要设计者 1999年设计,2000年首个版本发布 C#成为.NET平台主要编程语言之一

简单 健壮 自动内存管理 面向对象

C#与.NET

C#专为在.NET框架上运行而设计。 .NET框架: 由Microsoft开发,提供统一平台、工具和服务。 .NET支持桌面、Web和移动应用程序开发。 C#是.NET的主要语言,可利用.NET的库和工具构建各类应用。

C#基本语法

(1) 区分大小写Name和name是两个不同的标识符。

(2) 首字符,可以是下画线(_)或@或字母,但不能是数字。

(3) 首字符之后的字符,可以是下画线(_)、字母和数字。

(4) 关键字不能作为标识符,除非以@为前缀。

(5) 不能与C#中内置库类和方法名相同。

标识符命名约定

(1)帕斯卡(Pascal)命名法,第一个单词首字母大写,后续单词首字母都用大写,例如:FirstName、LastName

(2)骆驼(Camel)命名法,第一个单词的首字母小写,后续单词的首字母大写,例如productType

语句

复制代码
using System;
namespace HelloProj
{
    internal class Program
    {
        static void Main(string[] args)
        {
            int m = 5;
            if (m < 10)
            {
                Console.WriteLine("Hello, World!");
            }
        }
    }
}

变量作用域

(1)局部变量(也称为本地变量)的作用域是它所在的代码块中,即大括号封闭的范围内。例如,在 for、while、方法或类似语句中声明变量,就是局部变量了,它们的作用域就是该语句控制的大括号封闭的范围内。

(2)成员变量(也称为字段),它的作用域是整个类。

声明命名空间

namespace namespace_name { // 代码... }

namespace namespace_name1 { // 代码... namespace namespace_name2 { // 代码... ... } }

C#允许简写类的全名,这需要使用using关键字列出命名空间即可

C#数据类型

二进制数:以0b或0B为前缀,注意0是阿拉伯数字,不要误认为是英文字母o。 八进制数:以0为前缀,注意0是阿拉伯数字。 十六进制数:以0x或0X为前缀,注意0是阿拉伯数字。

字符类型表示单个字符,C#中char声明字符类型,C#中的字符常量必须包裹在单引号(')中。 C#字符采用Unicode UTF-16编码,占两个字节(16位),因而可用十六进制(无符号的)编码形式表示,它们的表现形式是\un,其中n为16位十六进制数,所以'B'字符也可以用Unicode编码'\u0042'表示。

类型转换方法

Convert.ToBoolean(x),将参数x转换为布尔类型 Convert.ToDouble(x),将参数x转换为double类型 Convert.ToStrin(x),将参数x转换为字符串类型 Convert.ToInt32 (x),将参数x转换为int整数 Convert.ToInt64 (x) ,将参数x转换为转换为long类型

装箱和拆箱

C#中任何值类型数据都可以转换为object(对象)类型, 它是所有对象的根类,在C#中所有类都直接或间接继承object类,对象都是引用类型。 这种将值类型数据转换为对象类型就是装箱(boxing),反之称为拆箱(unboxing)

默认情况下所有的数据类型都是非空类型(Non-Null),声明的变量都是不能接收空值(null)的, 但是有时变量确实有可能为空值,因此C#声明变量时,还可以指定可控类型(Nullable)

非空类型设计能够有效防止空指针异常,空指针异常引起的原因是试图调用一个空对象的方法或字段等成员时,则会抛出空指针异常。 在C#中可以将一个变量的声明为非空类型,那么它就永远不会接收空值,否则会发生编译错误

访问可空数值

复制代码
    internal class Program
    {
        static void Main(string[] args)
        {
            // 分配空值给变量x
            Nullable<int> x = null;
            // 分配空值给变量y
            bool? y = null;
            // 分配非空值给变量z
            float? z = 10.9f;
            Console.WriteLine("Value of x: " + x.GetValueOrDefault());
            Console.WriteLine("Value of y: " + y.GetValueOrDefault());
            Console.WriteLine("Value of z: " + z.GetValueOrDefault());
        }
    }
}

多维数组

复制代码
数组可以具有多个维度,列声明创建一个4行2列的二维数组代码如下。
int[,] array = new int[4, 2];
声明创建一个三维数组的示例代码如下。
int[, ,] array1 = new int[4, 2, 3];
也可以在声明数组时将其初始化,如下列所示。
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 } };
int[, ,] array3D = new int[,,] { { { 1, 2, 3 } }, { { 4, 5, 6 } } };

运算符

is运算符检查表达式的结果是否与给定的类型相兼容,注意这里的"兼容"是指对象是该类型,或者派生于该类型。

as运算符用于将引用类型数据的显式转换,如果要转换的类型与指定的类型兼容,则转换成功,否则返回null

条件语句

多分支语句

复制代码
switch (表达式) { 
    case 判断值1:
		语句组1 
    case 判断值2:
		语句组2 
    case 判断值3:
		语句组3 
    		... 
    case 判断值n:
		语句组n 
    default:
		语句组n+1 
} 

循环语句

break语句作用是强行退出循环体,不再执行循环体中剩余的语句,break语句语法格式如下。

continue语句用来结束本次循环,跳过循环体中尚未执行的语句,接着进行终止条件的判断,以决定是否继续循环。对于for语句,在进行终止条件的判断前,还要先执行迭代语句。

break和continue语句在多层嵌套循环时都只是跳出他们所在的内循环,如果想跳出外循环,则可以使用goto语句

面向对象基础

封装性 继承性 多态性

复制代码
class className {	//类声明
	//类体
}

创建对象

(1)声明,声明对象类型,与声明普通变量没有区别,语法格式如下。 type objectName; 其中,type是引用类型,即类、接口、枚举和数组。示例代码如下。 String name; 该语句声明了字符串类型变量name,但此时并未为对象分配内存空间,而只是分配一个引用。

(2)实例化,实例化过程分为两个阶段:为对象分配内存空间和初始化对象,首先使用new运算符为对象分配内存空间,然后调用构造方法初始化对象。

一个引用变量没有通过new分配内存空间,这个对象就是空对象。C#使用关键字null表示空对象。

当不再引用一个对象时,C#的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。因此,C#程序员不用关心对象的清除问题。

为了对类进行封装,类的字段通常被设计为私有的(private),那么为了能在类的外部有限地访问这些私有字段,C#引入了属性的概念,属性类似于字段,他们的区别:属性不存储数据,而字段存储数据。 声明属性时需要提供一个字段,以及对该字段读写的get(称为get访问器)和set方法(称为set访问器),其中get访问器用来读取字段数据,set访问器用来写入字段数据。

静态成员是该类所有实例(或对象)共有的。例如同一个公司员工,他们的员工编号、姓名和薪水会因人而异,而他们所在公司是相同。所在公司与个体实例无关或者说是所有员工实例共享的,这种类成员称为"静态类成员",声明时需要使用static关键字。

通常情况下一个类存储在单个文件中,但有的时候,多个开发人员需要访问同一个类,或者某种原因需要把一个类放在多个文件,这就是"部分类"。 使用partial关键字,它可以把类、结构和接口放在多个文件中。

相关推荐
whoarethenext15 分钟前
使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
开发语言·c++·opencv·mfcc
代码的奴隶(艾伦·耶格尔)1 小时前
后端快捷代码
java·开发语言
Jay_5151 小时前
C++多态与虚函数详解:从入门到精通
开发语言·c++
路来了1 小时前
Python小工具之PDF合并
开发语言·windows·python
xiaolang_8616_wjl2 小时前
c++文字游戏_闯关打怪
开发语言·数据结构·c++·算法·c++20
WJ.Polar2 小时前
Python数据容器-list和tuple
开发语言·python
FrostedLotus·霜莲3 小时前
C++主流编辑器特点比较
开发语言·c++·编辑器
超级码.里奥.农3 小时前
零基础 “入坑” Java--- 七、数组(二)
java·开发语言
KENYCHEN奉孝3 小时前
Rust征服字节跳动:高并发服务器实战
服务器·开发语言·rust
挺菜的3 小时前
【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)
java·开发语言·算法