C#如何调用其他类里面的系统函数

我现在在OperateIniFile.cs这个类中引用了几个系统函数如下:[DllImport("kernel32")]publicstaticexternlongWri... 我现在在OperateIniFile.cs这个类中引用了几个系统函数如下:
[DllImport("kernel32")]
public static extern long WritePrivateProfileString(string section, string key, string val, string filepath);

[DllImport("kernel32")]
public static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retval, int size, string filePath);
然后我想在其他类里面,比如MainForm.cs里面调用者2个系统函数,但是在MainForm实例化了OperateIniFile一个对象,却根本调用不了。

我把系统函数声明当中的static去掉后,会报“必须在标记为“static”和“extern”的方法上指定 DllImport 特性”这样的错误。

请问,我该如何在MainForm里面调用OperateIniFile.cs里面的系统函数。如果再在MainForm里面声明的话,比较麻烦。因为我还有几个类都需要调用这2个系统函数,每个类里面都声明一次,太麻烦。
展开
 我来答
仙戈雅3n
推荐于2016-09-10 · TA获得超过5790个赞
知道大有可为答主
回答量:2398
采纳率:75%
帮助的人:875万
展开全部

在别的类调用win api 函数时,由于声明是静态的,所以必须要用这种格式来调用:


类名.函数名(形参列表);


正如你所述,你在MainForm.cs文件若想调用windows api底层函数,那么,只需这样做即可:

// 调用时语法格式:类名.函数名(实参列表);
OperateIniFile.WritePrivateProfileString(这里填实参);

 

注:多说一句,在OOP里,静态成员是属于类级别的,其它属于实例级别的(即对象)。这个是基础知识。

更多追问追答
追问
不行,我试了。
追答

能“点”的出来么,即输入所在类名后按“.” 有没有智能提示? 如果有说明是正确,反之应该是你没写对。

例如,我这是这样子调用外部api函数的:

 // TestCall.cs
 public class TestCall
    {
        [DllImport("xxx.dll", CallingConvention = CallingConvention.Cdecl)]
        public static extern int MyFun(int x,int y);
    }
    
 // Program.cs
  static void Main(string[] args) {

       int sum=TestCall.MyFun(1,2);

       Console.WriteLine(sum);  // 结果输出3,正确地调用

       Console.ReadKey();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式