C#里可不可以有char* 参数好像可以直接传string类型 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以参考一下这个:UnmanagedType char* System.String 或 System.StringBuilder ms-help://MS.NETFrameworkSDKv1.1.CHS/cpguidenf/html/cpconplatforminvokedatatypes.htm 看一下Tomgus(小桥流水) 提供的连接,直接使用String就可以了。 可以试试unsafe关键词:unsafe 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。可以在类型或成员的声明中使用 unsafe 修饰符。因此,类型或成员的整个正文范围均被视为不安全上下文。例如,以下是用 unsafe 修饰符声明的方法:unsafe static void FastCopy ( byte[] src, byte[] dst, int count ){ // unsafe context: can use pointers here}不安全上下文的范围从参数列表扩展到方法的结尾,因此指针在以下参数列表中也可以使用:unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}还可以使用不安全块从而能够使用该块内的不安全代码。例如:unsafe { // unsafe context: can use pointers here}若要编译不安全代码,必须指定 /unsafe 编译器选项。无法通过公共语言运行库验证不安全代码。示例// cs_unsafe_keyword.cs// compile with: /unsafeusing System;class UnsafeTest { // unsafe method: takes pointer to int: unsafe static void SquarePtrParam (int* p) { *p *= *p; } unsafe public static void Main() { int i = 5; // unsafe method: uses address-of operator (&) SquarePtrParam (&i); Console.WriteLine (i); }}输出25 备注/unsafe 选项允许编译使用 unsafe 关键字的代码。在 Visual Studio 开发环境中设置此编译器选项 打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C# 项目属性。 单击“配置属性”文件夹。 单击“生成”属性页。 修改“允许不安全代码块”属性。 Wtypes.h 中的非托管类型 非托管C 语言类型 托管类名 说明 HANDLE void* System.IntPtr 32 位 BYTE unsigned char System.Byte 8 位 SHORT short System.Int16 16 位 WORD unsigned short System.UInt16 16 位 INT int System.Int32 32 位 UINT unsigned int System.UInt32 32 位 LONG long System.Int32 32 位 BOOL long System.Int32 32 位 DWORD unsigned long System.UInt32 32 位 ULONG unsigned long System.UInt32 32 位 CHAR char System.Char 用 ANSI 修饰。 LPSTR char* System.String 或 System.StringBuilder 用 ANSI 修饰。 LPCSTR Const char* System.String 或 System.StringBuilder 用 ANSI 修饰。 LPWSTR wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。 LPCWSTR Const wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。 FLOAT Float System.Single 32 位 DOUBLE Double System.Double 64 位 怎么动态显示遍历文件名 关于.net如何利用SQL SERVER 上的 .net端口 高手在哪? (100分)问一个双线程问题,一个线程导出数据,一个线程显示进度? 错误 请教! 用 ds.readmxl("..xml")读xml文件到DataSet时,能不能做类型转换,将一列数字内容转换为int型? 请教有关.NET开发windform的问题 急求:有关字符串问题 C#启动程序时证书验证? 请问代表是一个什么的概念啊? 怎样用多线程解决FOR循环的无响应和占CPU高的问题 如何控制DataGrid某一列的可见性?
{
// unsafe context: can use pointers here
}
不安全上下文的范围从参数列表扩展到方法的结尾,因此指针在以下参数列表中也可以使用:unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}
还可以使用不安全块从而能够使用该块内的不安全代码。例如:unsafe
{
// unsafe context: can use pointers here
}
若要编译不安全代码,必须指定 /unsafe 编译器选项。无法通过公共语言运行库验证不安全代码。示例
// cs_unsafe_keyword.cs
// compile with: /unsafe
using System;
class UnsafeTest
{
// unsafe method: takes pointer to int:
unsafe static void SquarePtrParam (int* p)
{
*p *= *p;
}
unsafe public static void Main()
{
int i = 5;
// unsafe method: uses address-of operator (&)
SquarePtrParam (&i);
Console.WriteLine (i);
}
}
输出
25
/unsafe 选项允许编译使用 unsafe 关键字的代码。在 Visual Studio 开发环境中设置此编译器选项 打开此项目的“属性页”对话框。有关详细信息,请参见设置 Visual C# 项目属性。
单击“配置属性”文件夹。
单击“生成”属性页。
修改“允许不安全代码块”属性。
HANDLE void* System.IntPtr 32 位
BYTE unsigned char System.Byte 8 位
SHORT short System.Int16 16 位
WORD unsigned short System.UInt16 16 位
INT int System.Int32 32 位
UINT unsigned int System.UInt32 32 位
LONG long System.Int32 32 位
BOOL long System.Int32 32 位
DWORD unsigned long System.UInt32 32 位
ULONG unsigned long System.UInt32 32 位
CHAR char System.Char 用 ANSI 修饰。
LPSTR char* System.String 或 System.StringBuilder 用 ANSI 修饰。
LPCSTR Const char* System.String 或 System.StringBuilder 用 ANSI 修饰。
LPWSTR wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
LPCWSTR Const wchar_t* System.String 或 System.StringBuilder 用 Unicode 修饰。
FLOAT Float System.Single 32 位
DOUBLE Double System.Double 64 位