【C#】菜鸟教程学习笔记(一)

假装是个前言

教程链接:http://www.runoob.com/csharp/csharp-tutorial.html
学C#主要是为了写Unity的脚本,由于之前已经学过C和C++了,这里仅记录一些遗忘了的和新的东西 (`・ω・´)
……感觉这篇里的内容基本跟C++差不多,大致扫一遍就可以了。


一. C#简介

C#语言是.Net框架的一部分
.Net框架是由微软开发,一个致力于敏捷软件开发、快速应用开发、平台无关性和网络透明化的软件开发平台。.NET是微软为下一个十年对服务器和桌面型软件工程迈出的第一步。.NET包含许多有助于互联网和内部网应用迅捷开发的技术。
这里写图片描述
(还是不懂

C#一些重要的功能
布尔条件(Boolean Conditions)
自动垃圾回收(Automatic Garbage Collection)
标准库(Standard Library)
组件版本(Assembly Versioning)
属性(Properties)和事件(Events)
委托(Delegates)和事件管理(Events Management)
易于使用的泛型(Generics)
索引器(Indexers)
条件编译(Conditional Compilation)
简单的多线程(Multithreading)
LINQ 和 Lambda 表达式
集成 Windows
(完全不懂


二.C#程序结构

一个C#程序主要包括以下部分:
1. 命名空间声明
2. 一个Class
3. Class方法
4. Class属性
5. 一个Main方法
6. 语句和表达式
7. 注释

一个简单的Hello World程序如下:

//命名空间
using System;
//一个namespace是一系列的类
namespace HelloWorldApplication{
//该命名空间里包含的类
    class HelloWorld{
    //Main方法是程序的入口点
        static void Main(string[] args){
            Console.WriteLine("Hello World");
            //针对VS.NET用户,防止屏幕快速关闭
            Console.ReadKey();
        }
    }
}
//C#是大小写敏感的
//规定所有方法的首字母是大写,所以Main也是大写的
//和Java不同,文件名可以不同于类的名称

感觉比较像Java (:з」∠)


三.C#基本语法

以一个矩形的类为例(跟C++差不多):

//包含命名空间
using System;
namespace RectangleApplication
{
    class Rectangle
    {
        // 成员变量
        double length;
        double width;
        //成员函数
        public void Acceptdetails()
        {
            length = 4.5;    
            width = 3.5;
        }
        public double GetArea()
        {
            return length * width;
        }
        public void Display()
        {
            //{0}是占位符,输出时用后面的参数替换
            Console.WriteLine("Length: {0}", length);
            Console.WriteLine("Width: {0}", width);
            Console.WriteLine("Area: {0}", GetArea());
        }
    }

    //一个包含Main方法和实例化Rectangle类的类
    //类的实例化:通过已有的类(class)来创建出该类的一个对象(object)
    class ExecuteRectangle
    {
        static void Main(string[] args)
        {
            Rectangle r = new Rectangle();
            r.Acceptdetails();
            r.Display();
            Console.ReadLine();
        }
    }
}

输出为:

Length: 4.5
Width: 3.5
Area: 15.75

标识符:
必须以字母,下划线或者@开头,第一个字符不能是数字。不包含嵌入的空格和符号,不能是C#关键字,不能与C#的类库名称相同。


四.C#数据类型

在C#中,变量分为三种类型:
1. 值类型
2. 引用类型
3. 指针类型

值类型:

从类 System.ValueType 中派生,可用类型基本同C++。
如需得到某个类型的具体尺寸:sizeof()

namespace DataTypeApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine("Size of int: {0}", sizeof(int));
         Console.ReadLine();
      }
   }
}
引用类型:

引用类型不包含存储在变量中的实际数据,但是包含对变量的引用。换句话说,它们指的是一个内存位置。
内置的引用类型分为:object,dynamic和string

对象类型(object):
是C#通用类型系统中所有类型的终极基类,可以被分配任何其它类型的值,但要先进行类型转换。

//将一个值类型转换为对象类型称之为装箱
//反之则为拆箱
object obj;
obj = 100; //这是装箱

动态类型(dynamic):
可以存储任何类型的值在动态数据类型变量中,这些变量的类型检查在运行时发生。

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

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

字符串类型(string):
允许给变量分配任何字符串值。字符串类型的值可以通过两种形式进行分配:引号和 @引号。

String str = "runoob.com";

//一个@引号字符串
@"runoob.com";

//字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待
string str = @"C:\Windows";

//上面的等价于
string str = "C:\\Windows";

//@ 字符串中可以任意换行
//换行符及缩进空格都计算在字符串长度之内
string str = @"<script type=""text/javascript"">
    <!--
    -->
</script>";
指针类型:

与C++相同。

char* cptr;
int* iptr;

五.C#类型转换

隐式类型转换:
这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。

显式类型转换:
显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。如:

double d=5673.74;
int i;
i=(int)d;

C#类型转换方法:
1. ToBoolean
2. ToChar
3. ToDateTime
4. ToString
5. …
见:http://www.runoob.com/csharp/csharp-type-conversion.html


六.C#变量

变量的初始化同C++。

接收来自用户的值:
System 命名空间中的 Console 类提供了一个函数 ReadLine(),用于接收来自用户的输入,并把它存储到一个变量中。

int num;
num = Convert.ToInt32(Console.ReadLine());

C# 中的两种表达式: Lvalues 和 Rvalues
lvalue:
lvalue 表达式可以出现在赋值语句的左边或右边。(如变量)
rvalue:
rvalue 表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。(如数值)


七.C#常量

(感觉基本同C++,如果碰到问题再查。)

定义常量:

const <data_type> <constant_name> = value;

八.C#运算符

(感觉基本同C++,如果碰到问题再查。)

p^q:相同为0,不同为1。
is:判断对象是否为某一类型。

//检查Ford是否是Car类的一个对象
if(Ford is Car) 

as:强制转换,即使转换失败也不会抛出异常。

Object obj = new StringReader("Hello");
StringReader r = obj as StringReader;

复习一遍优先级:
当然如果实际使用中忘了优先级,要多写几个句子就多写几个呗 (ゝ∀・)
这里写图片描述


九.C#判断与C#循环

(感觉基本同C++,如果碰到问题再查。)

foreach循环:
个人感觉也不是很有意义……

    int[] fibarray = new int[] { 0, 1, 1, 2, 3, 5, 8, 13 };

    foreach (int element in fibarray)
    {
        System.Console.WriteLine(element);
    }
    System.Console.WriteLine();


   // 类似 foreach 循环
   for (int i = 0; i < fibarray.Length; i++)
    {
       System.Console.WriteLine(fibarray[i]);
    }
   System.Console.WriteLine();

猜你喜欢

转载自blog.csdn.net/dango_miracle/article/details/79337539