C# ¹Ø¼ü×ÖexternÓ÷¨
ÐÞÊηûÓÃÓÚÉùÃ÷ÔÚÍⲿʵÏֵķ½·¨¡£extern ÐÞÊηûµÄ³£¼ûÓ÷¨ÊÇÔÚʹÓà Interop ·þÎñµ÷Èë·Ç
ÍйܴúÂëʱÓë DllImport ÊôÐÔÒ»ÆðʹÓã»ÔÚÕâÖÖÇé¿öÏ£¬¸Ã·½·¨»¹±ØÐëÉùÃ÷Ϊ static£¬ÈçÏÂÃæµÄʾÀýËùʾ£º[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
×¢Òâ
extern ¹Ø¼ü×Ö»¹¿ÉÒÔ¶¨ÒåÍⲿ³ÌÐò¼¯±ðÃû£¬Ê¹µÃ¿ÉÒÔ´Óµ¥¸ö³ÌÐò¼¯ÖÐÒýÓÃͬһ×é¼þµÄ²»Í¬°æ±¾¡£
½« abstract£¨C# ²Î¿¼£©ºÍ extern ÐÞÊηûÒ»ÆðʹÓÃÀ´ÐÞ¸Äͬһ³ÉÔ±ÊÇ´íÎóµÄ¡£Ê¹Óà extern ÐÞÊηûÒâζ×Å·½·¨ÔÚ C# ´úÂëµÄÍⲿʵÏÖ£¬¶øʹ
Óà abstract ÐÞÊηûÒâζ×ÅÔÚÀàÖÐδÌṩ·½·¨ÊµÏÖ¡£×¢Òâ
extern ¹Ø¼ü×ÖÔÚʹÓÃÉϱÈÔÚ C++ ÖÐÓиü¶àµÄÏÞÖÆ¡£ÈôÒªÓë C++ ¹Ø¼ü×Ö½øÐбȽϣ¬Çë²Î¼û C++ Language Reference ÖÐµÄ Using extern to
Specify Linkage¡£
ÔÚ¸ÃʾÀýÖУ¬³ÌÐò½ÓÊÕÀ´×ÔÓû§µÄ×Ö·û´®²¢½«¸Ã×Ö·û´®ÏÔʾÔÚÏûÏ¢¿òÖС£³ÌÐòʹÓÃ´Ó User32.dll ¿âµ¼ÈëµÄ MessageBox ·½·¨¡£
using System;
using System.Runtime.InteropServices;
class MainClass
{
[DllImport("User32.dll")]
public static extern int MessageBox(int h, string m, string c, int type);
static int Main()
{
string myString;
Console.Write("Enter your message: ");
myString = Console.ReadLine();
return MessageBox(0, myString, "My Message Box", 0);
}
}
´ËʾÀýʹÓà C ³ÌÐò´´½¨Ò»¸ö DLL£¬ÔÚÏÂһʾÀýÖн«´Ó C# ³ÌÐòµ÷Óøà DLL¡£
// cmdll.c
// compile with: /LD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
¸ÃʾÀýʹÓÃÁ½¸öÎļþ CM.cs ºÍ Cmdll.c À´ËµÃ÷ extern¡£C ÎļþÊÇʾÀý 2 Öд´½¨µÄÍⲿ DLL£¬Ëü´Ó C# ³ÌÐòÄÚµ÷Óá£
// cm.cs
using System;
using System.Runtime.InteropServices;
public class MainClass
{
[DllImport("Cmdll.dll")]
public static extern int SampleMethod(int x);
static void Main()
{
Console.WriteLine("SampleMethod() returns {0}.", SampleMethod(5));
}
}
Êä³ö
SampleMethod() returns
Ïà¹ØÎĵµ£º
ö¾Ù
¡¡¡¡Ã¶¾ÙÀàÐÍÉùÃ÷Ϊһ×éÏà¹ØµÄ·ûºÅ³£Êý¶¨ÒåÁËÒ»¸öÀàÐÍÃû³Æ¡£Ã¶¾ÙÓÃÓÚ“¶àÏîÑ¡Ôñ”³¡ºÏ£¬¾ÍÊdzÌÐòÔËÐÐʱ´Ó±àÒëʱÒѾÉ趨µÄ¹Ì¶¨ÊýÄ¿µÄ“Ñ¡Ôñ”ÖÐ×ö³ö¾ö¶¨¡£
¡¡¡¡Ã¶¾ÙÀàÐÍ£¨Ò²³ÆΪö¾Ù£©Îª¶¨ÒåÒ»×é¿ÉÒÔ¸³¸ø±äÁ¿µÄÃüÃûÕûÊý³£Á¿ÌṩÁËÒ»ÖÖÓÐЧµÄ·½·¨¡£ÀýÈ磬¼ÙÉèÄú±ØÐ붨ÒåÒ»¸ö±äÁ¿£¬¸Ã±äÁ¿ ......
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace PortScanner
{
class Program
{
¡¡//ÒÑɨÃè¶Ë¿ÚÊýÄ¿
¡¡internal static int scannedCount = 0;
¡¡//ÕýÔÚÔËÐеÄÏß³ÌÊýÄ¿
¡¡internal static int ru ......
C#Çå³ýÒ³Ã滺´æ
private void SetPageNoCache()
{
Response.Buffer = true;
Response.ExpiresAbsolute = Sy ......
(1)stringÊÇÒýÓÃÀàÐÍ£º
stringÊÇÒýÓÃÀàÐÍ£¬Õâ¾ÍÊÇ˵stringÔÚ¶ÑÉϱ£´æÊý¾Ý£¬¶øÔÚÕ»Öд洢µÄÊǶÔÏóµØÖ·£¬ÔÚÀí½âstringÀàÐÍÌØÐÔʱÊ×ÏÈÐèÒª¼ÇסÕâµã¡£Ö»²»¹ýÓëÆäËüһЩÒýÓÃÀàÐÍÏà±È£¬ËüÓÖÓÐһЩ±È½ÏÌØÊâµÄÌØÐÔ£¬±ÈÈçÏÂÃæµÄÕâЩ£º
(2)stringÊDz»¿É±äµÄ(immutable)£º
stringµÄÕâÒ»ÌØÐÔÊÇÖ¸£¬¶ÔÓÚÒÑÓеÄÒ»¸östring¶ÔÏ󣬵±ÄãÐÞ¸ ......
1.c++µÄµ½´¦º¯ÊýÖ»ÒªÔÚº¯ÊýÉêÃ÷µÄʱºò¼Ó¸öµ¼³ö¹Ø¼ü×־ͿÉÒÔÁË
2.²ÎÊýÀàÐÍÎÊÌâ,
Ò»°ãµÄc++ÖÐchar * ¶ÔÓ¦ c#ÖеÄstring
¶øc++ÖÐ char **ÀàÐ͵IJÎÊý¶ÔÓ¦c#ÖÐ ref string ÕâÖÖÒ»°ã¶¼ÊÇÓÃÀ´·µ»Ø×Ö·û´®µÄ!
3.º¯ÊýÈë¿ÚÎÊÌâ,Ò»°ã»á³öÏÖ "ÕÒ²»µ½Èë¿Úµã" Õâ¸öÎÊÌâ²»ÊÇÓÉÄãÒýÆðµÄ,¶øÊÇϵͳ×Ô¼º°ÑÃû×Ö¸ÄÁË,¸Ä³ÉʲôÑùµÄÃû×Ö½¨ÒéÄãÓà ......