代码如下:
        [DllImport("inpout32.dll", EntryPoint = "Out32")]
        private static extern void Output(int adress,int value);        [DllImport("inpout32.dll", EntryPoint = "Inp32")]
        private static extern int Input(int adress);在下看不明白“【】”与下面的方法是什么关系?虽然查了“MSDN”,但是由于没有用过不能很好的理解。这是一个票据打印类中的两句,您能帮忙说明下他们有什么功能?

解决方案 »

  1.   

    VB.NET特性---- Dllimport特性
    我们可以使用Declare语句调用外部DLL中的过程。但VB.NET给我们提供了另外一种更加先进的----- Dllimport特性。    如:Imports System.Runtime.InteropServices    <DllImport("user32")> _    Function Findwindow(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer    End Function    <DllImport("user32")> _    Function MoveWindow(ByVal hWnd As String, ByVal x As Integer, ByVal y As Integer, ByVal nWidth As Integer, ByVal nHeight As Integer, ByVal bRepaint As Integer) As Integer    End FunctionSub Test()        Dim hWnd As Integer = Findwindow(Nothing, "Untitled-Nodepad")        If hWnd <> 0 Then MoveWindow(hWnd, 0, 0, 600, 300, 1)    End Sub    这样就可以不任何代码实现便可以调用外部的Dll,即使我们改变方法名为FindwindowA,也可以顺利的实现调用,因为使用Dllimport特性编译器可以自动追踪实际的过程以及方法!    另外,Dllimport特性海支持几种可选的参数,来精确定义调用外部过程的方式,以及外部过程的返回值方式.    CharSet 参数:用于说明字符串传递给外部过程的方式,可以是CharSet.Ansi(默认),CharSet.Unicode.CharSet.Auto.    ExactSpelling参数:用于指定方法名是否和DLL中的名称完全一致,默认值为True.    EntryPoint参数:用于指定DLL中的实际函数名称.    CallingConvention参数:为入口点指定调用的约定,值有WinApi(默认值),CDecl,FastCallStdCall和ThisCall.    SetLastError参数:判断被调用函数是否设置了最近一次Win32错误代码,如果设置为True则可以通过Err.LastDllError方法或Marshal.GetLastWin32Error方法读取这些代码.    PreServeSig参数:为一个Boolean值,如果为True ,则将告诉编译器,方法不应被转换为一个返回HRESULT值函数.    下面使用Dllimport特性来调用myFunction.dll中的名为friend(friend为vb保留名称)的方法.Dllimport特性带有Unicode字符串,并影响Win32错误代码:<DllImport("myFunction.dll", EntryPoint:="Friend", CharSet:=CharSet.Unicode, SetLastError:=True)> _    Function MakeFriends(ByVal sl As String, ByVal s2 As String) As Integer    End Function
      

  2.   

    EntryPoint参数:用于指定DLL中的实际函数名称.
      

  3.   

    using System.Runtime.InteropServices; //引用此名称空间
    //使用DllImportAttribute特性来引入api函数
    [DllImport("user32.dll")]
    private static extern IntPtr FindWindow(string lpClassName,  
    string lpWindowName);  
    DllImport参数:   
    CallingConvention 参数指示入口点的调用约定。如果未指定 CallingConvention,则使用默认值 CallingConvention.Winapi。   
    CharSet 参数指示用在入口点中的字符集。如果未指定 CharSet,则使用默认值 CharSet.Auto。   
    EntryPoint 参数给出 dll 中入口点的名称。如果未指定 EntryPoint,则使用方法本身的名称。   
    ExactSpelling 参数指示 EntryPoint 是否必须与指示的入口点的拼写完全匹配。如果未指定 ExactSpelling,则使用默认值 false。   
    PreserveSig 参数指示方法的签名应当被保留还是被转换。当签名被转换时,它被转换为一个具有 HRESULT 返回值和该返回值的一个名为 retval 的附加输出参数的签名。如果未指定 PreserveSig,则使用默认值 true。   
    SetLastError 参数指示方法是否保留 Win32"上一错误"。如果未指定 SetLastError,则使用默认值 false。   
    说明看看API
      

  4.   

    http://msdn.microsoft.com/zh-cn/library/aa287992(v=VS.71).aspx
      

  5.   


    网址中是这样的,不解不解
    C# 属性
    Visual Studio .NET 2003本节包含属性介绍和对下列保留属性的说明。AttributeUsage 描述自定义属性类的用法。 
    Conditional 标记条件方法,即执行取决于指定预处理标识符的方法。 
    Obsolete 标记不应使用的程序实体。