c#学习笔记

一、c#程序结构

注意:(1)c#是大小写敏感的

(2)所有的语句和表达式必须以分号(;)结束

(3)程序执行以Main结束

(4)与java不同的是,文件名可以不同于类的名称

二、c#基本语法

c#是面向对象的语言,在面向对象的程序设计方法中,程序由各个相互作用的对象组成。一个对象采取的动作称为方法。相同种类的对象通常具有相同的属性,或者说是在相同的类中。

(1)在所有c#程序的第一句都是using System;

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

(2)class关键字

class关键字用于声明一个类

(3)成员变量

成员变量是一个类的属性或数据成员,用于存储数据。

(4)成员函数

成员函数是一系列执行特定任务的语句。类的成员函数是在类内部声明的。类似于JS中对象的方法

(5)实例化一个类

在Main()方法中进行实例化一个类。类似于JS中的新建一个对象的操作。

(6)标识符

标识符是用于标识类,变量,函数或任何其他用户定义项的名称。它有三点规则:

①名称必须以字母开头,后跟字母,数字或下划线,标识符第一个字符不能是数字

②它不能包含任何嵌入式空格或符号(除了下划线_)

③标识符不能是c#关键字

三、C#数据类型

在C#中,变量分为以下几种种类型:值类型、引用类型、对象类型、动态类型、字符串类型、指针类型

(1)值类型

值类型变量可以直接分配给其一个值,值类型直接包含数据,当声明一个值类型的数据时,系统会分配内存来存储它的值。

C#中的值类型有:bool、byte(8位无符号数)、char、decimal(128位精确的十进制值)、double(64位双精度浮点数)、float、int、long、sbyte、short、uint、ulong、ushort

注:如果想得到一个类型或者一个变量在某个地方的准确大小可以使用sizeof()方法。sizeof(type)

(2)引用类型

引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。也就是说,它们指向的是一个内存位置。使用多重变量是,引用类型可以指向一个内存位置。当内存位置的数据由于这些多重变量中的一个而改变是,其它变量也会自动跟着变。内置的引用类型有:object、dynamicstring。(dynamic是动态类型,它会跳过编译器的类型安全检查,在编译的时候编译器不知道是什么类型的数据,直到运行时才知道它是什么类型)。用户自定义引用类型有:class、interfacedelegate

注:值类型赋值给dynamic类型也会发生装箱操作,dynamic本质也是引用类型,它保存的是对object的引用,而非值本身。对于object类型来说,保存值类型总是会发生装箱操作。

(3)对象类型

对象类型是C#通用类型系统中的所有数据类型基类 。对象类型可以被分配任何其它类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是在分配之前需要先进行(强制)类型转换。

装箱:把一个值类型的值转换为对象类型或引用类型的值。

e.g:

object obj;
obj = 120; // 这是装箱操作

拆箱:把一个对象类型或引用类型的值转换为值类型的值。

e.g:

int a = 40;
object obj = a;
a = (int)obj;  //  这是拆箱操作

注:对象类型是引用类型里的一种

(4)动态类型

可以在动态类型数据类型变量中存储任何类型的值。这些变量的类型检查是在运行时进行的。

声明动态类型的语法:

dynamic <variable_name> = value;

e.g:

dynamic d = 20;
Console.WriteLine(d);  //  输出20

(5)字符串类型

字符串类型允许给变量赋任何字符串值。他是从对象类型派生的。字符串类型的值可以通过两种形式进行分配:引号@引号

e.g:①引号形式:

string str = "asdf";

②@引号形式:

string str1 =  @"qwer";

(6)指针类型

指针类型变量存储另一种类型的内存地址。c#中指针与c和c++中的指针功能一样。

声明语法:

type* identifier;

e.g:

int* intp;
char* charp;

四、c#类型转换

类型转换是把数据从一种类型转换成另一种类型,它有两种形式:隐式类型转换显式类型转换

(1)隐式类型转换:这类转换是c#默认的以安全方式进行的转换。例如:从小的整数类型转换为大的整数类型,从派生类转换为基类。

(2)显式类型转换:这类转换时通过用户使用预定义的函数完成的。这类转换需要强制转换运算符。

五、C#变量

基本的值类型:整数类型(sbyte、byte、short、ushort、int、uint、long、ulong、char)、浮点型(float、double)、十进制类型(decimal)、布尔类型(true或false)、空类型(可为空值的数据类型)。

c#允许定义其它值类型的变量,比如enum,也允许定义引用类型变量,比如class。

六、C#运算符

C#有六类运算符:

(1)算数运算符(+  -  *  /  %  ++  --)

(2)关系运算符(==  !=  >  <  >=  <=)

(3)逻辑运算符(&&  ||  !)

(4)位运算符(&  |  ^)

(5)赋值运算符(=  +=  -=  *=  /=  %=  <<=(左移且赋值)  >>=(右移且赋值)  &=(按位与且赋值)  ^=(按位异或且赋值)  |=(按位或且赋值))

(6)其它运算符(sizeof():返回一个数据类型的大小  typeof():返回一个类的类型  ?: 条件表达式)

七、C#封装

八、C#类

一个类定义以关键字class开始,其后跟的是类的名称。

e.g:

class class_name{
    variable1;
    variable2;
    ......
    variablen;
    // 成员变量
    
    method1{
        // 方法主体
    }
    method2{
    
    }
    ......
    methodn{
    
    }
}

注意:(1)访问说明符的访问成员的规则与类本身的访问规则相同。也就是说假如成员变量和成员方法都是public,但是类是private,相当于成员变量和成员方法都是private。如果没有声明访问说明符,那么默认对类的访问类型为internal(表示它所修饰的类只能在同一个程序集中被访问,而同一个程序集表示同一个dll程序集或同一个exe程序集),对成员的默认访问类型是private(私有)。(私有成员变量和私有成员方法不能通过外部进行访问,只能通过这个类内部的公共的成员方法来调用它,而外部通过调用这个类的公共的成员方法来调用这个私有成员方法)

(2)数据类型制定了变量的类型,如果有返回值的话,返回指定方法的数据类型。

(3)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值