c#关键字含义和用法

explicit:指定构造函数和转换函数为显性,防止隐式转换。

implicit :隐式转换,使用需要注意。

const:形参中什么时候需要使用const。类对象作为参数传递时要把形参写成 const 引用的形式。

(95条消息) C++ 关于函数形参中const的作用_形参加const_121大魔王的博客-CSDN博客

extern:可以在一个文件中引用另一个文件中定义的变量或者函数。

注意:1、利用extern关键字先声明变量,这个变量必须在其他文件或本文件中去声明。

           2、extern声明在其他文件的变量,该变量必须是全局变量。

           3、extern关键字只需要指明类型和变量名就行了,不能再重新赋值。 

finally:当一个异常抛出时,它会改变程序的执行流程。因此不能保证一个语句结束后,它后面的语句一定会执行,在 C# 中这个问题可以用 finally 解决。为了确保一个语句总是能执行(不管是否抛出异常),需要将该语句放到一个 finally 块中,finally 要么紧接在 try 块之后,要么紧接在 try 块之后的最后一个 catch 处理程序之后。只要程序进入与一个 finally 块关联的 try 块,则 finally 块始终都会运行 -- 即使发生了一个异常。
(95条消息) C# 中 finally 的用法_c#里的finally使用方法_转角撞倒猪的博客-CSDN博客

 fixed:禁止垃圾回收器重定位可移动的变量。 fixed 语句只在 不安全的上下文中是允许的,使用关键字unsafe。

using System;

namespace basicTest
{
    public class Test
    {
        static void Main()
        {
            int[] arr = { 1, 2, 3, 4, 5 };
            Func(ref arr);
            Array.ForEach(arr,x => Console.WriteLine(x))
;        }
        //想通过指针,将数组中的每个数值加1
        public static void Func(ref int[] arr)
        {
            unsafe
            {
                //int*[] parr = new int*[5];
                //for (int i = 0; i < 5; i++)
                //{
                //    //parr[i] = (int*)&arr[i];
                //    *parr++;
                //}
                //for (int i = 0; i < 5; i++)
                //{
                //    (*parr[i])++;
                //}
                fixed (int* pArr = &arr[0])
                {
                    for(int i=0;i<5;i++)
                    {                     
                        *(pArr + i)+=1;
                    }
                }
            }   
        }
    }
}

 static:静态类、成员、函数用法。

1、静态类不能实例化,不能使用new创建静态类类型变量。

2、静态成员只被创建一次。

3、静态函数只能调用静态成员,不能调用非静态函数,但非静态函数可以调用静态函数。

4、静态函数的调用直接使用类名,或者直接调用就可以。

C# 之 static的用法详解 - Now,DayBreak - 博客园 (cnblogs.com)

 interface:接口。

        1、接口用于描述一组类的公共方法/公共属性。
        2、接口中的方法没有具体实现,也就是没有方法体,必须由继承者去实现而且必须全部实现。
        3、 接口中的方法不需要修饰符,默认就是公有的(Default / Public)。
        4、接口可以包含方法、属性、索引器、事件。不能包含任何其他的成员,例如:常量、字段、域、构造函数、析构函数、静态成员。

internal:内部访问。 修饰的类只能在同一个程序集中使用,即同一个dll或者同一个exe程序集。

override:扩展或修改继承的方法、属性、索引器或事件的抽象或虚拟实现需要 override 修饰符。

       1、不能使用 newstatic 或 virtual 修饰符修改 override 方法。

       2、不能重写非虚方法或静态方法。 重写基方法必须是 virtualabstract 或 override

(95条消息) C#关键字之override详解_public override void_入秋枫叶的博客-CSDN博客

 params:是C#的关键字, 可变长参数,是在声明方法时参数类型或者个数不确定时使用。

        1、参数数组必须是一维数组。  

        2、不允许将params修饰符与ref和out修饰符组合起来使用。  

        3、与参数数组对应的实参可以是同一类型的数组名,也可以是任意多个与该数组的元素属于同一类型的变量。  

        4、若实参是数组则按引用传递,若实参是变量或表达式则按值传递。

        5、形式为:方法修饰符 返回类型 方法名(params 类型[ ] 变量名)。

        6、params参数必须是参数表的最后一个参数。

 readonly:动态常量,被赋值后不允许改变。

        1、通常用在类中属性前面

        2、使用了readonly的属性,只能在定义时,或者构造函数中初始化,其他的地方都不能再修改其值

class Age
{
    //年纪添加了 readonly修饰符
    //1.可以在定义时对其赋值
    readonly int year=20;
    //2.在构造函数中赋值
    Age(int year)
    {
         this.year = year;
    }
    //3.但是不能在其他地方赋值
    void ChangeYear()
    {
        year = 1967; // 如果这里赋值了,会出现编译错误
    }
}

sealed:密封。 它修饰的类或方法将不能被继承或重写。

        1、在类中使用sealed修饰符可防止其他类继承此类

        2、在方法声明中使用sealed修饰符可防止扩充类重写此方法

abstract
abstract 修饰符可用于类、方法、属性、索引和事件。

抽象类具有以下功能:

抽象类仅用作派生类的基类,而不能实例化
无法使用 sealed 修饰符来修改抽象类,因为两个修饰符的含义相反。 sealed 修饰符阻止类被继承,而 abstract修饰符要求类被继承
派生自抽象类的非抽象类,必须包含全部已继承的抽象方法和访问器的实际实现。
抽象方法具有以下功能:

抽象方法是隐式的虚拟方法。
只有抽象类中才允许抽象方法声明。
由于抽象方法声明不提供实际的实现,因此没有方法主体;方法声明仅以分号结尾,且签名后没有大括号 ({ })。
在抽象方法声明中使用 static 或 virtual 修饰符是错误的
静态属性上使用 abstract 修饰符是错误的
通过包含使用 override 修饰符的属性声明,可在派生类中重写抽象继承属性。

 类继承IDisposable

如果一个类继承了IDisposable接口,那么该类就必须实现Dispose方法。在该类的实例不再需要时,可以调用Dispose方法手动释放类型持有的资源,如打开的文件、数据库连接、网络连接等。这样可以确保这些资源被及时释放,从而避免浪费、泄漏或者其他潜在的问题。

通过实现IDisposable接口和Dispose方法,我们可以更好地控制和管理资源使用,提高应用程序的可靠性和稳定性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值