C#修饰符stattic、virtual、abstract、override、sealed、extern

  1. static
    用于所有成员(函数,类、方法、属性)成员不作用于类的具体实例。因此不需要实例化。
创建的一个Test1类里面包含static静态的属性和方法
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WindowsFormsApplication3
{
   public class Test1
    {
       public static string a = "123";
       string _b = "";
       public string b
       {
           get { return _b; }
           set { value = _b; }
       }

       public static void TestFunction()
       {

       }
    }
}

FORM窗口中调用该函数
Test1.a = "qwe";
Test1.TestFunction();
注意:这是不需要实例化的。
  1. virtual
    用于函数成员,成员可以由派生类重写。用该修饰符修饰的函数可以作为正常的函数使用,也可以在派生类中用override进行重写。
  2. abstract
    对于该修饰符,在我的另一篇微博中作出了详细的讲解。
    4.sealed
    用于类、方法和属性。对于类不能进行继承只能实例化。对于属性和方法,不是类的每个成员方法都可以作为密封方法,要作为密封方法必须对基类的虚方法进行重写,提供具体的实现方法。
using System ;

class A
{
   public virtual void F( )
   { 
        Console.WriteLine("A.F") ; 
   }

   public virtual void G( )
   {     
       Console.WriteLine("A.G") ; 
   }
}

 class B: A
 {
     sealed override public void F( )
     { 
          Console.WriteLine("B.F") ; 
       }

     override public void G( )
     {
           Console.WriteLine("B.G") ; }
     }

 class C: B
 {
    override public void G( )
    { 
        Console.WriteLine("C.G") ; 
     }
}

5.extern
extern 修饰符用于声明在外部实现的方法。 extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 特性一起使用。 在这种情况下,还必须将方法声明为 static,如下面的示例所示:
[DllImport(“avifil32.dll”)]
private static extern void AVIFileInit();
将 abstract 和 extern 修饰符一起使用来修改同一成员是错误的做法。 使用 extern 修饰符意味着方法是在 C# 代码的外部实现的,而使用 abstract 修饰符意味着类中未提供方法实现。

示例 1. 在此示例中,程序接收来自用户的字符串并将该字符串显示在消息框中。 程序使用从 User32.dll 库导入的 MessageBox 方法。
 //using System.Runtime.InteropServices;
    class ExternTest
    {
        [DllImport("User32.dll", CharSet=CharSet.Unicode)] 
        public static extern int MessageBox(IntPtr h, string m, string c, int type);

        static int Main()
        {
            string myString;
            Console.Write("Enter your message: ");
            myString = Console.ReadLine();
            return MessageBox((IntPtr)0, myString, "My Message Box", 0);
        }

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值