C# extern 修饰符的用法

   extren主要用于声明在外部实现的方法,什么叫外部实现的方法呢,一般说来就是用System.Runtime.InteropServices服务的DllImport方法引入非托管代码程序集。例如调用程序API,C语言写的方法等等。在这种情况下,声明必须为static

  同时,extren关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本。

  下面是一个改写自MSDN上的简单的例子,调用系统winmm.DLL播放wav文件:

  //系统API的调用的声明

  [System.Runtime.InteropServices.DllImport("winmm.DLL", EntryPoint = "PlaySound", SetLastError = true)]

  public static extern void PlaySound(string path,System.IntPtr hMod,PlaySoundFlags flags);

  //调用该方法

  string path = @“c:22.wav”;

  try

  {

  PlaySound(path, new System.IntPtr(), PlaySoundFlags.SND_SYNC);

  }

  catch (Exception ex)

  {

  throw (ex);

  }

时间: 2024-10-20 04:04:19

C# extern 修饰符的用法的相关文章

C#中const 和 readonly 修饰符的用法详解_C#教程

1. 只有C#内置类型(int,double,long等)可以声明为const;结果.类和数组不能声明为const. 2. readonly 是在字段上使用的修饰符,直接以类名.字段访问. 3. const 必须在申明中初始化.之后不能再修改. 4. readonly可以在申明中初始化,也可以在构造函数中初始化,其它情况不能修改. namespace const_and_readonly { class Program { static void Main(string[] args) { Co

《.NET程序员面试秘笈》----面试题5 描述sealed修饰符的使用

面试题5 描述sealed修饰符的使用 .NET程序员面试秘笈[考点]sealed修饰符的意义,密封类和抽象类的关系,sealed修饰符的用法. [出现频率] [解答] 在ch01目录下新建一个程序文件,并命名为Sealed.cs,编写代码如程序1.6所示. 在命令行下编译Sealed.cs后,执行Sealed程序,其效果如图1.8所示. 从本例代码中可知,密封类一般情况下的使用方法和其他类一样,只是无法被继承.代码中Product类的虚方法display方法被Phone类重写,而被重写的dis

Java基础-10总结形式参数,包,修饰符,内部类

你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新,欢迎阅读 学习交流请加Java帮帮交流QQ群553841695 分享是一种美德,分享更快乐! 类,抽象类,接口的综合小练习 /* 教练和运动员案例(学生分析然后讲解) 乒乓球运动员和篮球运动员. 乒乓球教练和篮球教练. 为了出国交流,跟乒乓球相关的人员都需要学习英语. 请用所学知识: 分析,这个案例中有哪些

内部类-java方法参数的修饰符问题

问题描述 java方法参数的修饰符问题 java在写方法时,为什么有的方法参数用final修饰? 还有就是内部类存在的意义是什么? 也就是说方法中的内部类和类中的内部类各有什么应用场景(请有实战经验的大神各自举个例子)? //问题补充(关于方法中的内部类) 我的意思是: pubic class TestClass{ public void fun(){ public class Test1{ //........ } } } 解决方案 为了实现一些内容,常常需要这么玩: public void

printf()和scanf()中的控制字符串与转换说明符和转换说明修饰符

一.printf()函数 1. (格式)转换说明符 2. (格式)转换说明修饰符 注:printf()中float和double统一用%f,没有%lf这种用法,long double用%Lf 本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/C/

C++中的const限定修饰符

const修饰符可以把对象转变成常数对象,什么意思呢? 意思就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用! 使用方法是: const int a=1;//这里定义了一个int类型的const常数变量a; 但就于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆! 我们来看一个如下的例子: #include <iostream>using namespace std;void main(void){const int

详解Java编程中protected修饰符与static修饰符的作用_java

protected 来谈谈protected访问权限问题.看下面示例1: Test.java class MyObject {} public class Test { public static void main(String[] args) { MyObject obj = new MyObject(); obj.clone(); // Compile error. } } 此时出现上文提到的错误:The method clone from the type Object is not v

C# C++ 写修饰符为WINAPI的xxxA和xxxW函数

问题描述 在C#中可以很方便的调用WinAPI,特别是像MessageBox等函数它是有两个版本的:MessageBoxA和MessageBoxW,也可以通过指示获得相应的版本或自适应相应的版本.比如只需要拼写MessageBox而不用写MessageBoxA或MessageBoxW就能找到正确的函数:[DllImport(.....)]externstaticsMessageBox(...);现在问题来了,如果我自己也想用C/C++编写一个类似的,怎么实现呢??我试过在用C编译器编译,只有这样

正则表达式u修饰符(支持UTF-16编码)

正则表达式u修饰符: 此修饰符标识能够正确处理大于\uFFFF的Unicode字符. 也就是说,会正确处理四个字节的UTF-16编码. 此修饰符是ES2015新增,更多正则表达式新特性可以参阅ES2015 正则表达式新增特性一章节. 更多正则表达式教程可以参阅正则表达式教程板块. 代码实例: console.log(/^\uD842/u.test("\uD842\uDFB7")) 输出false,由于"\uD842\uDFB7"是一个四个字节的UTF-16编码,代表