工程项目常见的知识点(1)

 

(一)、关于override的用法,是对 父类中的 虚方法的重写覆盖。

 

 

override(重写,覆盖) 

(1)方法名、参数、返回值相同。 

(2)子类方法不能缩小父类方法的访问权限。 

(3)子类方法不能抛出比父类方法更多的异常(但子类方法可以不抛出异常)

(4)存在于父类和子类之间。 

(5)方法被定义为final不能被重写。 

(6)被覆盖的方法不能为private,否则在其子类中只是新定义了一个方法,并没有对其进行覆盖。

 

overload(重载,过载) 

(1)参数类型、个数、顺序至少有一个不相同。

(2)不能重载只有返回值不同的方法名。 

(3)针对于一个类而言。 

(4)不能通过访问权限、返回类型、抛出的异常进行重载; 

(5)方法的异常类型和数目不会对重载造成影响;

 

override应用中,最熟悉的覆盖就是对接口方法的实现,在接口中一般只是对方法进行了声明,而我们在实现时,就需要实现接口声明的所有方法。 除了这个典型的用法以外,我们在继承中也可能会在子类覆盖父类中的方法。

override是在不同类之间的行为,overload是在同一个类中的行为。

简述override和overload的区别

 

(二)、C#中sealed关键字

1. sealed关键字

    当对一个类应用 sealed 修饰符时,此修饰符会阻止其他类从该类继承。类似于Java中final关键字。

在下面的示例中,类 B 从类 A 继承,但是任何类都不能从类 B 继承。

2. sealed 修饰方法或属性

    能够允许类从基类继承,并防止它们重写特定的虚方法或虚属性。

    1)sealed是对虚方法或虚属性,也就是同override一起使用,如果不是虚方法或虚属性会报出错误:cannot be sealed because it is not an override

public class D { /* ConsoleApplication1.MSFun.Sealed.D.M()' * cannot be sealed because it is not an override */ public sealed void M() { Console.WriteLine("D.M()"); } }

  2)防止子类重写特定的方法或属性

public class A  
{  
    protected virtual void M() { Console.WriteLine("A.M()"); }  
    protected virtual void M1() { Console.WriteLine("A.M1()"); }  
}  
  
public class B : A  
{  
    protected sealed override void M() { Console.WriteLine("B.M()"); }  
    protected override void M1() { Console.WriteLine("B.M1()"); }  
}  
  
public sealed class C : B  
{  
    /* ConsoleApplication1.MSFun.Sealed.C.M()': 
     * cannot override inherited member 'ConsoleApplication1.MSFun.Sealed.B.M()' 
     * because it is sealed */  
    //protected override void M() { Console.WriteLine("C.M()"); }  
  
    protected override void M1() { Console.WriteLine("C.M1()"); }  
}

(三)、GUID表示全局唯一标识符

https://blog.csdn.net/diyu122222/article/details/79791073

什么是 GUID?

全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID。

为什么要用GUID?

世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。

 

(四)、readonly关键字

readonly用于字段,意思是:字段只能在初始化时候赋值,在随后的使用中,字段的值不能再改变。举个列子:

public class TestReadonly
{
    private int readonly int x; //X是只读字段
    public TestReadonly()

    {
        // 只能在初始化时,对只读字段赋值
        x = 100;
    }
    

    pubilc int GetX()
    {
        //这个语句是错误的,因为x不能被再次赋值,x是只读的(readonly),而
        // 下面的语句试图改变x的值。
        //x = x +100;

        //这个语句是正确的,因为语句执行后,x的值没有变
        int x1 = x + 100;
        return x1;
    }
}

c#中,这个readonly干什么用呢

关于C#中readonly

 

(五)、using关键字的使用

https://www.cnblogs.com/ma-yuanhao/p/9139262.html

using语句,定义一个范围,在范围结束时处理对象。

using语句提供了一个脉络清晰的机制来控制资源的生存期,创建的对象会在using语句结束时被摧毁,使用前提该对象必须继承了IDisposable接口,以下代码说明了using的机制:

string str = "LittleBai";
//创建写入字符串
Byte[] bytesToWrite = Encoding.Default.GetBytes(str); ;
//创建文件
using (FileStream fs = new FileStream("test.txt", FileMode.Create))
{
    //将字符串写入文件
    fs.Write(bytesToWrite, 0, bytesToWrite.Length);
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值