C#第一节(C#程序结构、基本语法、数据类型、xml注释及其与.Net的关系)

一、.net框架(.Net Framework)

在.net平台上可以编写出下面类型的应用程序:

  • Windows应用程序
  • Web应用程序
  • Web服务

    2、.net框架是多平台的应用程序,框架的设计方式使它使用于下列语言:C#、C++、Visual Basic、Jscript、COBOL,这些语言之间可以彼此交互,当然java语言也能与C#的交互

二、类与方法

类一般包含了多个方法,方法定义了类的行为

以下几点值得注意:

  1. C#大小写敏感;
  2. 所有程序和表达式必须是分号(;)结尾;
  3. 程序执行从Main方法开始;
  4. 与java不同的是,文件名可以不同于类名(ps:java中的public修饰的类要和文件名一样)

在面对对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的class中。
eg,Rectangle(矩形)类实现demo:

public class Rectangle
    {
        double length;
        double width;
        public void acceptDetail()
        {
            length = 4.5;
            width = 3.5;
        }
        public double getArea()
        {
            return length * width;
        }
        public void disPlay()
        {
            Console.WriteLine("length is {0}" , length);
            Console.WriteLine("width is {0}", width);
            Console.WriteLine("Area is {0}", getArea());

        }
class Test
{
    static void Main(string[] args)
        {
            Rectangle rectangle = new Rectangle();
            rectangle.acceptDetail();
            rectangle.disPlay();
            Console.ReadKey();
        }
}

运行结果:
这里写图片描述
注意:C#中的占位符需要一一对应

            Console.WriteLine("A:{1},B:{0}", 66, 88);
            Console.ReadKey();

运行结果:
这里写图片描述
ps:类的实例化就是new对象,除了这个以外还有工厂模式等使用create()方法来造对象;

(1)、标识符:
用来标识类、变量、函数或任何其他用户定义的项目,在C#中,类的命名规则为:

  • 标识符必须以字母、下划线或@开头,后面可以跟一系列的字母、数字(0-9)、下划线(_)、@;
  • 标识符中第一个字符不能是数字;
  • 标识符必须不能包含任何嵌入的空格或符号,比如?-+!#%&……。;:“‘/*;
  • 标识符不能是C#关键字,除非它有一个 @前缀,eg:@if是有效的标识符,但是if不是;
  • 标识符必须区分大小写;
  • 不能与C#类库名称相同

    **

三、C#关键字

**
在C#中,有些关键字在代码上下文有特殊的意义,如get和set,这些被称为上下文关键字(contextual keywords).
下表列出了C#的保留关键字(Reserved Keywords)和上下文关键字 (contextual Keywords)
这里写图片描述
这里写图片描述

**

四、C#中的//和///注释的区别

**
C#引入了新的XML注释,即///;
{1}、//不会被编译,而///会被编译,所以使用了///会减慢编译速度(但不会影响执行速度)
{2}、使用///会在其他类中调用代码时提供智能感知(通常在Form,Designer.cs创举哦会自动生成///注释的程序)
{3}、以///方式修类、属性、方法加上注释之后,当你在其他地方使用以这种方式加上的类,属性,方法等的时候,提示框会把你写的注释显示出来,让你更加明白你要使用的功能的作用。
C#引入新的xml注释,即哦我吗在某个函数前起一行,输入///,VS.Net会自动增加XML格式的注释,这里整理一下看用的XML注释。XML注释分为一级注释(Primary Tags)和二级注释(Secondary Tags),前者可以单独存在,后者必须包含在一级注释内部。
一级注释

  1. 对共有类型的类、方法、属性或字段进行注释;
  2. 主要用于对属性的注释,表示属性的制的含义,可以配合使用;
  3. 对类型进行描述,功能类似,据说建议使用 ;
  4. 用于对方法的参数进行说明,格式:value;
  5. 用于定义方法的返回值,对于一个方法,输入///后,会自动添加、、;
  6. 定义可能抛出的异常,格式:;
  7. 用于给出如何使用某而方法、属性或者字段的使用方法;
  8. 涉及方法的访问许可;
  9. 用于参考某个其他的东西,也可以通过cref设置属性;
  10. 用于指示外部的XML注释;
    二级注释

  11. or 主要用于加入代码段;

  12. 的作用类似于HTML中的

    标记符,就是分段;

  13. 用于引用某个参数;
  14. 作用类似于,可以指示其他的方法;
  15. 用于生成一个列表;
  16. 还可以自定义XML标签
    2》、让C#智能注释多行显示
    在C#智能指示时,常希望它能在开发时显示为换行,使得提示更加友好!实际上很简单,只需要在类似、、等标记中添加标记即可。

C#数据类型

在C#中,变量分为以下几种类型:

  • 值类型(Value types)
  • 引用类型(Reference types)
  • 指针类型(Pointer types)
    值类型
    值类型变量可以直接分配给一个值。它们是从类System.ValueType中派生的。
    值类型直接包含数据,比如int、char、float
    下表列出了可用的值类型:
    这里写图片描述

若需要得到一耳光类型或者变量在特定平台上的准确尺寸,可以使用sizeof方法,表达式sizeof(type)产生以字节为单位存储对象或类型的存储尺寸,eg:获取任何机器上的int类型的存储尺寸

 static void Main(string[] args)
        {
            Console.WriteLine("size of int is:{0}", sizeof(int));
            Console.ReadKey();
        }

运行结果为:
这里写图片描述

引用类型(Reference types)
引用类型不包含存储在变量中的实际数据,但包含对变量的引用;即指的是内存地址,引用类型可以指向一个内存位置,如果内存位置的数据由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:object、dynamic 和 string
1、对象(object)类型
object类型是通用类型系统(Common Type System-CTS)中所有数据类型的终极基类。Object是System.Object类的别名。所以Object类型可以被分配任何其他类型(值类型、引用类型、预定义类型或用户自定义类型)的值。但是在分配值之前,需要先进行类型转换。
当一个值类型转换为对象类型时,被称为装箱;另一方面,当一个对象类型转换为值类型时,被称为拆箱。eg:

object obj;
obj = 100;//这是装箱

2、动态(Dynamic)类型
可以存储任何类型的值在动态数据类型变量中。这些变量的类型检查是在运行时发生的。
声明动态类型的语法:

//dynamic < variable_name >= value;
dynamic d = 20;

动态类型与对象类型相似,但是对象类型变量的类型检查是在编译时发生的,而动态类型变量的类型检查时在运行时发生的。

3、字符串(String)类型

String类型允许给变量分配任何字符串值。String类型是System.String 类的别名。它是从Object类型派生的。String类型的值可以通过两种形式进行分配:引号和@引号。eg:

String str = "baidu.com";

一个@引号字符串:

@"baidu.com"

C# String字符串前面可以加@(称为“逐字字符串”)将转义字符(\)当成普通字符对待,eg

String daStr = @"C:\Windows";

等价于:

String daStr = "C:\\Windows";

@字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内

String str = @"<script type=""text/javascript"">
<!--
-->
</script >";

用户自定义类型有:class、interface或delegate.

指针类型(Pointer types)
指针类型变量存储另一种类型的内存地址。C#中的指针与C或C++中的指针有相同的功能。
声明指针类型的语法:

type* indentifier;

eg:

char* cptr;
int* iptr;

笔记:
一、关于装箱和拆箱

  • 装箱:值类型转换为对象类型,eg:
int val = 8;
object obj = val;//整型转换为独享类型(装箱)

拆箱:之前由值类型转换而来的对象类型再转回值类型,eg:

            int val = 66;
            object obj = val;//装箱
            int nval = (int)obj;//拆箱

注意:只有装过箱的数据才能拆箱
装箱需要耗费人力和工时(即消耗cpu和内存)同理,拆箱也需要耗费人力和工时。
二、obj(引用)与int(值类型)之间的关系

             int val = 55;
            object obj = val;
            obj = 52;
            Console.WriteLine("val的值为:{0}", val);
            Console.WriteLine("obj的值为:{0}",obj);
            Console.ReadKey();

运行结果:
这里写图片描述
可以看出,引用类型只是复制了值类型的值出啦,然后对其进行操作,而不会改变原来的值类型的值。

三、C#中的string 和String的区别
stringshi C#中的类,String是.net Framework的类(在C#IDE中不会显示蓝色)c#string映射为.net Framework的String,如果用string,编译器会把它变异成String,so直接用String,会让编译器少做一点点工作。
如果使用C#,建议使用string,比较符合规范,string始终代表System.String(1.x)或::System.Strig(2.0),String 只有在前面有using System;的时候并且当前命名空间中没有名为String的类型(class,struct,delegate,enum)的时候才代表System.String string 是关键字,string不是,也就是说string不能作为类、结构、枚举、字段、变量、方法、属性的名称,而String可以。
String 是CLR的类型名称(也算关键字),而string是C#的关键字。string在编译的时候C#编译器会默认将其转换为String。在VS中表现的颜色不同:String是绿色,string是蓝色。
这里写图片描述
四、值类型特点:

  1. 不能从值类型派生新类型,但可以结构实现接口。
  2. 值类型不能包含null值;
  3. 每个值类型都具有一个初始化该类型的默认值的隐式默认构造函数;

每一个值类型都有一个独立的内存区域保存自己的值,调用它的时候调用的是它的值,而引用类型调用的是内存中的地址,比如定义引用类型a1=10,这时候在内存中保存的是10,当把a1赋给a2的时候,他们两个应用的是同一个内存空间,a2的值会保存为a1的值,当把a2改为20,因为a1和a2指向的是同一块内存空间,所以,a1也变成了20,这是引用类型
值类型是:当a1赋值给a2时,会为a2重新分配一块新的内存空间,保存a1的值(复制一份给a2),当修改a2为20的时候,会在a2的空间中保存20,和a1并无什么关系。

猜你喜欢

转载自blog.csdn.net/weixin_39885282/article/details/80069250