C# 语法笔记

这篇具有很好参考价值的文章主要介绍了C# 语法笔记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.ref、out:参数传递的两种方式

ref:引用传递

using System;
namespace CalculatorApplication
{
   class NumberManipulator
   {
      public void swap(ref int x, ref int y)
      {
         int temp;

         temp = x; /* 保存 x 的值 */
         x = y;    /* 把 y 赋值给 x */
         y = temp; /* 把 temp 赋值给 y */
       }
   
      static void Main(string[] args)
      {
         NumberManipulator n = new NumberManipulator();
         /* 局部变量定义 */
         int a = 100;
         int b = 200;

         Console.WriteLine("在交换之前,a 的值: {0}", a);
         Console.WriteLine("在交换之前,b 的值: {0}", b);

         /* 调用函数来交换值 */
         n.swap(ref a, ref b);

         Console.WriteLine("在交换之后,a 的值: {0}", a);
         Console.WriteLine("在交换之后,b 的值: {0}", b);
 
         Console.ReadLine();

      }
   }
}

out: 输出传参

假设在函数调用前变量a的值为5;

此函数的实现使用输出传参,在方法内第一次修改a=1,第二次修改a=2,第三次修改为a=3,那么a的值会在执行此函数后为3;

C# 语法笔记,C#笔记,笔记,c#,unity

unity中的射线检测的第三个参数就是通过输出值传递被击中

物体的信息

public static bool Raycast(Vector3 origin, Vector3 direction, out RaycastHit hitInfo, float maxDistance);

还有一种就是最普通的值传递;

2.如何给bool赋值null

有些类型不能为空值,int,bool,float等;

使用"?"可让它们变成可空类型

赋值方法 bool? a=null;

a从bool类型的值变为可空bool值;

3."??"运算符

如果第一个操作数的值为 null,则运算符返回第二个操作数的值,否则返回第一个操作数的值

例子:a=b??c 如果b等于null则a等于c(不管c的值是不是null)

4、交错数组

C# 语法笔记,C#笔记,笔记,c#,unity

5、数组作为参数的两种方式

函数的参数中有数组时,可以传递数组的指针和将数组整体作为参数.

数组指针作为参数:

C# 语法笔记,C#笔记,笔记,c#,unity

数组整体作为参数:

 需要 在方法定义时配上关键字params;

C# 语法笔记,C#笔记,笔记,c#,unity

6.结构体

与c和c++的结构体有所不同,参考文档

结构体的对象存储在栈中,适合体积小且简单的类型,访问速度快。

类的对象存储在堆中,适合体积大且复杂的语句块,但访问速度慢,栈中只存有对象的引用。

例如:

有一个类是Book类, 执行语句Book a;

a只是Book类的一个引用还没有分配内存,a在栈中。

当a=new Book()时,才为a分配了一个对象,这个对象在堆中,a作为内存位置的引用还是在栈中;

7.枚举(enum)

作用就是获取一个列表内成员在当前列表的序号,从0开始;

C# 语法笔记,C#笔记,笔记,c#,unity

8.访问修饰符

用于封装后对封装数据的权限设置

五种:public,private,protected,Internal,protected Internal.

前三个和c++没啥区别;

类的默认就是Internal,也就是所有程序里都可以用这个类;

protected Internal“访问限于当前程序集或派生自包含类的类型”,目前没看见过这个;

9.类的成员函数

构造函数+析构函数+其他函数

构造函数:无返回值(也没有void),和类同名,默认无参数,可以手动实现带参构造;

析构函数:和类同名,前面带一个 “~”,无法继承无法重载,在类被销毁时调用;

C# 语法笔记,C#笔记,笔记,c#,unity

2023.12.6补充:

除了构造函数,类的成员函数默认都为private;

10.静态成员

有点像单例,同一个类的对象再怎么多,这个类的静态成员的实例都不会随着对象的生成而增多,永远只有一个;

静态成员在对象生成前就已经存在了;

所以可以直接通过类名来访问静态成员;

而且静态函数只能访问静态变量;

可以用来实现Main函数;

11、多态(重点内容)

同一个方法,能实现不同的效果;

静态多态:

静态多态理解为函数的多态;

同一个函数,实现不同的效果 =>函数重载,同一个函数,参数不同,效果不同。

动态多态:

动态多态理解为类的多态;

依靠抽象类和虚方法来实现:abstract和virtual

C# 语法笔记,C#笔记,笔记,c#,unity

理解:一个类声明为抽象类(加上abstract),其派生类可以重写其内部的函数;

在抽象类里声明为abstract的函数不能写出函数主体,只能声明,不能定义,不然会报错

C# 语法笔记,C#笔记,笔记,c#,unity

派生类不实现重写抽象类的抽象函数会报错

C# 语法笔记,C#笔记,笔记,c#,unity

重写抽象函数时无法改变访问修饰符

C# 语法笔记,C#笔记,笔记,c#,unity

将抽象函数声明为Virtual可以在不同的派生类里实现不同的方法。

实测感觉直接用abstract也可以实现Virtual的这个功能,不知道Virtual还有没有其他特殊用法

C# 语法笔记,C#笔记,笔记,c#,unity

2023.12.6补充:

abstract修饰函数的申明,子类必须去定义基类里申明为abstract的函数,因为去定义这个函数;

virtuai修饰整个函数,子类可以去重写也可以不重写;

override修饰的函数,子类里必须去重写这个函数;

12、接口

关键字:interface

C# 语法笔记,C#笔记,笔记,c#,unity

接口的作用就是使得继承自这个接口的类有相似的结构,都会实现接口内的函数这个特性就使得子类都有相似的结构;

13、预处理命令

C# 语法笔记,C#笔记,笔记,c#,unity

很实用的是,#region和#endregion组合可以实现自定义代码块的折叠;

#region 注释

代码

#endregion文章来源地址https://www.toymoban.com/news/detail-756697.html

到了这里,关于C# 语法笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity学习笔记--使用 C# 开发一个 LRU

    什么是 LRU 在计算机系统中,LRU(Least Recently Used,最近最少使用)是一种缓存置换算法。缓存是计算机系统中的一种能够高速获取数据的介质,而缓存置换算法则是在缓存空间不足时,需要淘汰掉部分缓存数据以腾出空间,使得后来需要访问数据能够有更多的缓存空间可用。

    2024年02月13日
    浏览(132)
  • Unity学习笔记(零基础到就业)|Chapter03:C#核心

    这系列的学习笔记主要是根据唐老狮的unity实战路线课程整理的,加入了自己的一些补充和理解,该课程涉及的知识内容非常多,我并未学完,而是根据就业需求挑选学习的,也对后续框架部分进行了一些修改,希望能通过整理并时常阅读这些笔记巩固开发知识,也希望能跟

    2024年02月20日
    浏览(60)
  • Unity3D高级编程主程手记 学习笔记二:C#技术要点

    1.Untiy3D中C#的底层原理 Unity底层在运行C#程序时有两种机制:一种是Mono,另一种是IL2CPP。 Mono存在的目的是为了跨平台 ,因为最初C#只支持Windows。而IL可以看成是一种汇编语言且完全基于堆栈,必须运行在虚拟机上。也就是说C#会被编译器编译成IL,当需要他们时就会被实时的

    2024年02月08日
    浏览(64)
  • 【C#基础】C# 基础语法解析

    序号 系列文章 0 【C#基础】初识编程语言C# 1 【C#基础】C# 程序通用结构 😄 大家好,我是writer桑,前面一章已经学习了C#的程序结构,那本章就开始学习C#程序中的基础语法,希望看完大家能够有所收获,感谢支持! 首先 C# 作为一门面向对象的编程语言,有着许多区别于其他

    2024年02月05日
    浏览(44)
  • Java语法和C#语法有哪些异同?

    Java和C#是两种流行的面向对象编程语言,它们有许多相似之处,因为它们都受到C++和面向对象编程的影响。但它们也有一些语法上的异同,让我们来看看它们的一些主要异同点: 相同点: 1、面向对象编程:Java和C#都是面向对象的编程语言,支持类、对象、继承、封装和多态

    2024年02月16日
    浏览(40)
  • C#基础——语法学习

    在介绍基本语法之前我们先来大概讲一下创建好的这些文件都是做什么的 常用快捷键 ctrl + k + d :快速对其代码 ctrl + k + c :注释代码 ctrl + k + u :取消注释代码 f1:查看帮助文档 C# 提供了三种注释方式 1.单行注释 2.多行注释 3.标注 C#语法中内置了数据类型,分为了三类 1.值

    2024年02月04日
    浏览(42)
  • c#语法问题记录

    using 语句定义一个范围,在此范围的末尾将释放对象。 using 指令为命名空间创建别名,或导入在其他命名空间中定义的类型。 internal: 是类型和类型成员的访问修饰符。 sealed :应用于某个类时,sealed 修饰符可阻止其他类继承自该类。 partial :拆分一个类、一个结构

    2024年02月16日
    浏览(28)
  • C#基本语法

    定义:C#是一种面向对象的编程语言。 在任何c#程序中的第一条语句都是 using用于在程序中包含命名空间。一个程序可以包含多个using语句 class class用于声明一个类 C#的注释 注释是用于解释代码。编译器会忽略注释的条目。 例:多行注释以/*开始,通过*

    2024年01月20日
    浏览(26)
  • C# 6.0 语法新特性

    静态using(static using)。引用静态类后,可以直接方法名 表达式方法 使用表达式方法,只有一条语句的方法可以使用lambda语法写。 表达式属性 自动属性初始化 只读自动属性 nameof操作符 字段、属性、方法和类型的name可以通过nameof访问。使用nameof,可以方便的重构name变化 Nu

    2024年02月07日
    浏览(31)
  • 二、C#基础语法( 控制结构)

    在C#中,控制结构用于控制程序的流程,决定了代码的执行顺序。C#支持以下几种主要的控制结构: 条件语句 :根据某个条件(布尔表达式)来决定执行的代码块。 循环语句 :重复执行一段代码,直到满足某个条件。 跳转语句 :改变程序的执行流程。 异常处理 :用于捕获

    2024年02月04日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包