C#学习笔记与心得

(写的不好如有错误的地方望指出,感谢!!!)

目录

前言

一、基础知识概述

1.开幕雷击

2.变量

1.2.1 变量种类

1.2.2 变量的作用域

1.2.3 变量的转换 

总结


前言

本来是冲着学unity去了解c#的学了一段时间之后发现它真的跟c语言很像,只不过c语言是面向过程的语言而c#是面向对象的语言,在前面学起来c#要比c语言友善一点但是在后续的学习中一些抽象的概念可能极大的困扰初学者的继续学习,如果提前有接触过c++的话学起来应该就没有什么难度了(Java还没具体去看过好像也差不多)。学了一段unity之后发现其实只会c#去写代码是真的不太现实,毕竟你的代码要作用在物体身上但是素材的来源是个令人头疼的问题,网上虽然有很多免费的素材但是想要找到自己想要的就很难。不过不管怎么样先学好一个是一个下面就开始我对学习c#的一些笔记(不全大部分只摘录我认为需要记得地方)。


一、基础知识概述

1.开幕雷击

在vs中创建一个c#的空hi太应用程序之后会出现下面的一些代码其中,

using + 命名空间名 是用来引入一些类库来调用其方法(命名空间是存储一些类和方法的容器使用它是为了避免出现同名不同用法的类和方法,增强兼容性。另外你写的所有东西都要包含在一个命名空间中。)

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

在这里它很贴心的为我们打印出来了Hellow World。

但是当你运行的时候会发现终端一闪而过,不要慌加上下面这一句话(vs2019不会出现这个问题这句话是针对老版本的vs)

  Console.ReadLine();

即可。

Console.WriteLine() :跟c语言中的print类似用来把里面的内容输出的到终端中。

Console.ReadLine() :通过键盘向程序中输入(这里主要是为了卡死程序防止终端一闪而过)。

在c#里面程序运行的入口在Main函数里面,而我们所有的代码都要包含在类里,在每一句话的结尾都要加上分号(所有的代码中的符号都要用英文)。

至于注释和命名规范什么的我就不多介绍了跟c语言一致。

2.变量

1.2.1 变量种类

在C#里面的常用的变量有:int(整形),float(浮点型),double(双精度浮点型),bool(布尔类型),等这些都属值类型。而我们在使用的类(要用new关键字类创建变量)和string(字符串)属于引用类型。 

int bazhou = 3,a;
a = bazhou;

 在我们适应变量之前一定要对一个变量进行定义如上图所示否则编译器将找不到这个变量,在变量初始化的时候也可以像这样

int a = b = c = d = bazhou =3;

进行连续赋值。

(以下为拓展防忘)

值类型中包括:

整数形C#学习笔记与心得_第1张图片

浮点类型

在上面我们提到了new这个关键字,这个关键字可以在堆区为我们开辟一块空间,在我们对类进行实例化的时候大部分要用的new来创建,这时创建出来的实例化类型就是引用类型。

以下是我对值类型和引用类型的区别的看法(仅代表个人看法):在我们使用 = 的时候值类型进行赋值操作只单纯的将变量的值给别的变量本质就是复制,而引用类型是将两个变量公用一块内存空间。通俗来说就是两个人有两件一摸一样的衣服,但是其中一个人把衣服划破不会影响另一个人,但如果这两个共同穿一件衣服时其中一个人对衣服干的所有事情都会影响到另外一个人。

(不用感到疑惑其实就是跟c里面的指针一个意思实际上是c++里的引用&操作)

using System;

namespace ConsoleApp2
{
    class Program
    {
        static void Main(string[] args)
        {
            ReferenceAndValue.Demonstration();
        }
    }

    public class stamp
    {
        public string Name { get; set; }
        public int Age { get; set; }
    }

    public static class ReferenceAndValue
    {
        public static void Demonstration()
        {
            stamp Stamp_1 = new stamp { Name = "wangbazhou", Age = 18 };
            stamp Stamp_2 = new stamp { Name = "liningning", Age = 19 };
            int age = Stamp_1.Age;
            Stamp_1.Age = 22;
            stamp baba = Stamp_2;
            Stamp_2.Name = "baba";
            Stamp_2.Age = age;
            Console.WriteLine("Age:{0} , Age:{1}", Stamp_1.Age, age);
            Console.WriteLine("Name:{0} , Age:{1}", Stamp_2.Name, Stamp_2.Age);
            Console.WriteLine("Name:{0} , Age:{1}", baba.Name, baba.Age);
        }
    }
}

可以用上述代码验证。 

1.2.2 变量的作用域

变量的的种类说完后就要提起变量的作用域了,一般作用域有两种:

1.成员变量

即在类里面定义的变量,可以作用于整个类里。它又分为静态变量和实例变量。

静态变量在定义的时候要加上static(如上图)此变量在该类的所有实例化中公用一块内存空间,在没有实例化的时候也能以 类名.静态变量名 在类外使用。

实例变量只能在类实例化之后才能使用,多个实例化类中的局部变量不互通(引用类型除外)。

2.局部变量

在类的方法(函数)里定义的变量,只能作用在该方法内。

C#学习笔记与心得_第2张图片

1.2.3 变量的转换 

变量之间的转换可分为值类型值类型转换和值类型引用类型转换。

1.值值转换

隐式转换:不需要任何操作由编译器自动转化。例如

float ba = 1.0;
double bazhou;
bazhou = ba;

可以隐式转换的有这些

C#学习笔记与心得_第3张图片(注:由高精度转低精度时可能会产生数据丢失) 

显式转换:又称强制转换,需要在代码中明确说明要转换的类型

C#学习笔记与心得_第4张图片

 可以强制转换的方法有

flaot bazhou = 1.22;
int xiaoba;
string str = "18";
xiaoba = (int)bazhou;
xiaoba = Convert.ToInt32(bazhou);
bazhou = flaot.Parse(str);//括号里面只能是字符串并且必须是数字
str = xiaoba.ToString();

2.值引转换

 这个将值类型转化为引用类型的时候实际上是给值类型的变量找一个引用类型的载体变量,通常用object(类的根,很像c++11里面auto,可以接受任意类型的变量),演示如下:

            int i = 12;
            object obj = new int();
            obj = i;
            object j = obj;
            Console.WriteLine(obj + "  " + j);
            i = 13;
            obj = i;
            Console.WriteLine(obj + "  " + i);
            Console.ReadLine();

输出结果为:12,12

                      13,13 


总结

虽然本博客写作本意是只想给自己的学习留下笔记,但还是希望能给路过的你提供一点帮助。如有错误还望指正。(内容不全仍在更新中)

你可能感兴趣的:(c#,开发语言,后端)