C#基础(一)

 

 

C#基础(一)

基本介绍

C#的特点

  • C#是微软公司发布的一种面向对象的、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言

  • C#是一种安全的、稳定的、简单的、优雅的,由C和C++衍生出来的面向对象的编程语言。它在继承C和C++强大功能的同时去掉了一些它们的复杂特性

  • C#是面向对象的编程语言

.NET 与.NET Framework

.NET 框架是一个创建、部署、运行应用系统的多语言平台环境语言

.NET Framework是微软为开发应用程序而创建的一个平台,利用它,你可以开发Windows桌面应用程序,Web应用程序,Web服务以及其它类型的应用程序。.NET Framework的设计方式确保它可以用于各种语言,包括C#,C++,Visual Basic, JScript等。

Visual Studio 安装

Mirosoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集。是编写C#程序或者说.NET程序最常用的开发工具。因其功能强大、简单易用、速度快、智能度高。被网友戏称宇宙第一IDE。

1.下载请到官网下载,地址可百度,根据需要下载对应版本,社区版免费

2.vs安装对网络有要求,如安装失败或下载失败或速度较慢可百度,有很多解决方法就不一一赘述

3.根据自己需要安装模块,一般选择“ASP.NET开发”、“.NET桌面开发”、“通用Windows平台开发”、“数据库存储和处理”、“Visual Studio扩展开发”,当然,如果后续需要在安装别的还可以打开该安装程序安装、更新。

C#特点

支持多线程

相较于C与C++,C#对指针的使用有限制

自动内存分配、垃圾回收

基本操作

注意:

  • C#大小写敏感的。
  • 所有的语句和表达式必须以分号;结尾。
  • 与Java不同的是,文件名可以不同于类的名称。
  • 代码块在{}内表示

C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种对象组成。相同种类的对象通常具有相同的类型。

console.read()——输入一个字符

console.readline()——输入一行字符串

console.write()——输入一个数据或一个字符串

console.writeline()——输入一个字符串并且换行

强制类型转换

int.parse()、double.parse()、Convert.Toint()等等

注意

Convert.Tolnt32(double value)遵守四舍五入,而parse则向下取整,但:

Convert.Tolnt32(double value) ,不完全遵循四舍五入,如果value为两个整数中间的数字,则返回二者中的偶数

对比下面的例子:

Console.WriteLine(Convert.ToInt32(4.3));//四舍五入,输出4
Console.WriteLine(Convert.ToInt32(4.5));//第一位小数为5时,4. 5在4和5之间,输出偶数4 
Console.WriteLine(Convert.ToInt32(4.53)); //四舍五入,输出5
Console.WriteLine(Convert.ToInt32(5.3));//四舍五入,输出5
Console.WriteLine(Convert.ToInt32(5.5)); //第一位小数为5时,5.5在5和6之间,输出偶数6 
Console.WriteLine(Convert.ToInt32(5.53)); //四舍五入,输出6

注意:ConvertToInt32()int.Parse()对于空值(null)的处理不同,ConvertToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。

基本语法

简单规范

注意:

  • C#大小写敏感的。

  • 所有的语句和表达式必须以分号;结尾。

  • 与Java不同的是,文件名可以不同于类的名称。

C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种对象组成。相同种类的对象通常具有相同的类型。

关键字,是对编译器有特殊意义预定义保留标示符,它们不能在程序中用作标示符

  • using关键字

    在任何C#程序中的第一条语句都是: using System;

    using关键字用于在程序中包含命名空间。一个程序可以包含多个using语句。

  • class关键字

    class关键字用于声明一个类。

  • C#的注释方式

    1. // 单行注释
    2. /**/ 多行注释
    3. /// 文档注释
    4. 注释的作用:
    • 解释:说明代码作用

    • 注销:将暂时不需要的代码注销

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fKllL5y3-1653398872869)(/image-20220517210132955.png)]

要注意几件事,对于代码的规范性要有要求:

  1. 代码注释是一定要写的,有句话叫不写注释那就是耍流氓
  2. 对于名称的命名,需要注意规范命名方法,驼峰命名法是一个很好地选择,命名要见文生义

数据类型

其中,值类型数据存放在栈中

引用类型数据则为一个指针,指向堆中存放地址。指针源于c语言,指向内存地址

变量

  • 变量是一个供程序存储数据盒子。在C#中,每个变量都有一个特定的类型,不同类型的变量其内存大 小也不尽相同。

  • C# 中提供的基本类型大致分为以下几类:

    类型举例
    整数类型byte、short、int、long
    浮点型float、double
    十进制类型decimal
    布尔类型bool
    字符类型string、char
    空类型null表达式

表达式

  • 表达式由**操作数(operand)运算符(operator)**构成。运算符的示例包括+-\*/new。操作数的示例包括文本、字段、局部变量和表达式。

  • 当表达式包含多个运算符时,运算符的优先级(precedence)控制各运算符的计算顺序。例如,表达式x + y * zx + (y * z)计算,因为*运算符的优先级高于+运算符。

  • (了解)大多数运算符都可以重载(overload)。运算符重载允许指定用户定义的运算符实现来执行运算,这 些运算的操作数中至少有一个,甚至所有操作数都属于用户定义的类类型或结构类型。

  • 下表总结了C#简单常用的运算符,并按优先级从高到低的顺序列出各运算符类别。同类别中的运算符 优先级相同。

类别表达式说明
基本x.m成员访问
 x(...)方法和委托调用
 x[...]数组和索引器访问
 newT(...)对象和委托创建
 newT(...){...}使用初始值设定项创建对象
 new{...}匿名对象初始值设定项
 newT[...]数组创建
 ++x前增量
 --x前减量
 x++后增量
 x--后减量
 (T)x将x显示转换为类型T
二元x * y乘法
 x / y除法
 x % y取余
 x <= y小于或等于
 x >= y大于或等于
 x == y等于
 x != y不等于
 x & y整形按位与 ,布尔逻辑AND
 x 1 y整形按位或 ,布尔逻辑OR
 x && y且,当 x 为true时,才对 y 求值
 x 11 y或,当 x 为false时。才对 y 求值
三元x ? y : z如果 x 为true,对 y 求值,x 为false,对 z 求值

分支语句

if 语句

if-else 语句

switch 语句

循环语句

for循环

for(int i = 0; i<10;i++ ){     }           

while循环

while(true){  }

do-while循环

do{  }while(true)
   

数组

  • 数组是一组相同类型的数据。

  • 数组中的数据需要通过数字索引来访问。

数组的声明

  • 数组的声明需要使用new关键字。

  • 在声明数组时,可以使用{}来初始化数组中的元素。

  • 如果在数组声明之初没有使用大括号来初始化数组中的元素,则需要指定数组的大小。

  • 在声明初始化有元素的数组时,也可以指定数组大小。

//声明没有元素的数组     
int[] ints = new int[6]     
//声明初始化有元素的数组     
int[] ints = new int[]{1, 3, 4, 5}     
//在声明初始化有元素的数组时,也可以指定数组大小     
string[] strings = new int[5]{"H", “E", "L",“L","0"}

通过索引获取数组中的元素。

  • 给数组指定长度时,数组准备存放多少元素,长度就设置为多少。
  • 用索引获取数组内的元素时,索弓|从0开始获取。
  • 所以数组中最大的索引数字,比指定数组长度小1。
//声明初始化有元素的数组  
int[] ints = new int[]{1, 3,4,5}  
//获取数组中第1个的元素。
int i1 = ints[0];  
//给数组内的元素赋值
ints[0]  = 1  

标识符和关键字

  • 标识符的构成字母、数字、下划线、unicode字符组成

  • 开头不能是数字

  • 不能与关键字重名,区分大小写

  • 允许标识符以@作为前缀

@可用于取消转义,于\的作用相同,但其只要在引用部分之前加上即生效

@"D:\Tencent Files\2482608252\FileRecv"
等效于 "D:\\Tencent Files\\2482608252\\FileRecv"

扩展

ref与out

**ref 关键字使参数按引用传递。**其效果是,当控制权传递回调,用方法时,在方法中对参数所做的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。

**out 关键字会导致参数通过引用来传递。**这与 ref 关键字类似,不同之处在于 ref 要求变量必须在传递之前进行初始化。若要使用 out 参数,方法定义和调用方法都必须显式使用 out 关键字。

同:

1、都能返回多个返回值。

2、若要使用 ref 和out参数,则方法定义和调用方法都必须显式使用 ref和out 关键字。在方法中对参数的设置和改变将会直接影响函数调用之处(参数的初始值)。

1、ref指定的参数在函数调用时候必须初始化,不能为空的引用。而out指定的参数在函数调用时候可以不初始化;

2、out指定的参数在进入函数时会清空自己,必须在函数内部赋初值。而ref指定的参数不需要。

个人理解:ref与out相当于指针的调用,ref调用指针指向原地址,修改数据,但要注意,一定要是初始化赋值的地址;out则先删掉原指针地址数据,要求传递的只是这个地址,所以无需赋值,并要求在方法中必须赋值

ref正确用法

 class Program
    {
        static void Main(string[] args)
        {
            Program pg = new Program();
            int x = 10;
            int y = 20;
            pg.GetValue(ref x, ref  y);
            Console.WriteLine("x={0},y={1}", x, y);
 
            Console.ReadLine();
        }
 
        public void GetValue(ref int x, ref int y)
        {
            x = 521;
            y = 520;
        }
    }

out正确用法

class Program
    {
        static void Main(string[] args)
        {
            Program pg = new Program();
            int x=10;
            int y=233;
            pg.Swap(out x, out y);
            Console.WriteLine("x={0},y={1}", x, y);
 
            Console.ReadLine();
        }
 
        public void Swap(out int a,out  int b)
        {
            int temp = a;   //a,b在函数内部没有赋初值,则出现错误。
            a = 521;
            b = 520;
        }     
    }

ref与out部分Demo引用自:总结ref和out的区别_萝卜头敲代码的博客-CSDN博客_out ref
全文主要引用
C#(笔记本)——第一章_lucid_dreamings的博客-CSDN博客

以及
babbittry/Csharp-notes: C# 课程笔记 (github.com)
如有错误,请批评指正

有想了解更多可访问其博客,谢谢!!

如有侵权,请联系作者,会在第一时间修正删除

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲墨知秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值