C#的指针
来源:互联网 发布:外墙瓷砖搭配软件 编辑:程序博客网 时间:2024/06/05 13:29
对于C#来说,指针是没有任何意义的,写这个完全是爱好.业务的时候,写了个测试指针的类.测试了一下.感觉还可以
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Test
{
/// <summary>
/// 测试C#数据存取
/// </summary>
class TestModel
{
struct TestStruct
{
public int a ;
public string b;
}
private char[] str1 = "1".ToCharArray();
private char[] str2 = "2".ToCharArray();
public static TestModel kkk = new TestModel();
public static void test()
{
TestStruct mm = new TestStruct();
test2 kk = new test2();
System.Console.WriteLine(Convert.ToString((Int64)Marshal.GetIUnknownForObject(mm)));
System.Console.WriteLine(Convert.ToString((Int64)Marshal.GetIUnknownForObject(kk)));
System.Console.ReadLine();
}
public static void testStruct()
{
TestStruct ttt = new TestStruct();
TestModel t = TestModel.kkk;
ttt.a = 1;
char[] str1 ="3".ToCharArray();
char[] str2 ="4".ToCharArray();
ttt.b = "5";
unsafe
{
IntPtr ptr = Marshal.GetIUnknownForObject(ttt.b);
System.Console.WriteLine(Convert.ToString((Int64)ptr));
IntPtr ptr3 = Marshal.GetIUnknownForObject(str1);
System.Console.WriteLine(Convert.ToString((Int64)ptr3));
IntPtr ptr2 = Marshal.GetIUnknownForObject(str2);
System.Console.WriteLine(Convert.ToString((Int64)ptr2));
System.Console.WriteLine("t.str1="+Convert.ToString((Int64)Marshal.GetIUnknownForObject(t.str1)));
System.Console.WriteLine("t.str2="+Convert.ToString((Int64)Marshal.GetIUnknownForObject(t.str2)));
System.Console.WriteLine(Convert.ToString((Int64)Marshal.GetIUnknownForObject(t)));
int a1 =2;
int a3 = 3;
int a4 = 4;
int a5 = 5;
System.Console.WriteLine(Convert.ToString((Int64)(&a1)));
System.Console.WriteLine(Convert.ToString((Int64)(&a3)));
System.Console.WriteLine(Convert.ToString((Int64)(&a4)));
System.Console.WriteLine(Convert.ToString((Int64)(&a5)));
}
System.Console.WriteLine(Convert.ToString(Marshal.SizeOf(ttt)));
System.Console.ReadLine();
}
public unsafe static void TestString()
{
string a = "abc";
System.Console.WriteLine(Convert.ToString((Int64)Marshal.GetIUnknownForObject(a)));
test(a);
System.Console.ReadLine();
}
public unsafe static void test(string str)
{
IntPtr ptr = Marshal.GetIUnknownForObject(str);
str = "123";
object t = Marshal.GetObjectForIUnknown(ptr);
System.Console.WriteLine(t.ToString());
System.Console.WriteLine(Convert.ToString((Int64)Marshal.GetIUnknownForObject(str)));
}
}
public class test2
{
int a;
int b;
string a2;
string b2 = "abc";
}
}
- C#的指针
- c#中指针的使用
- C#下的指针运用
- C# 内存指针的操作
- C#的类类似于指针
- C# StreamReader的指针问题
- C#下的指针运用
- C#指针
- C# 指针
- C#的委托 VS C++的指针
- C#指针*的使用(使用指针复制字节数组)---02
- C#指针*的使用(使用指针复制字节数组)---02
- C# 调用C++ dll 指向指针的指针 对应数据类型
- c# 中指针指向类的成员
- C#中对象指针的使用
- C#使用指针的代码例程
- c#指针(unsafe与fixed的使用)
- 定义C#鼠标指针的形状 Cursor
- 在asp.net中做视频转换,将各种视频文件转换成.flv格式
- 网络游戏中的数据包设计与定义(初论)
- 牛!!一些美国人为何坚持给伊朗总统言论自由
- PHP中如何使用header发送头部信息
- 关于选择、冒泡排序的思考
- C#的指针
- 30岁前不必在乎的事
- 试验网站#1搜索引擎优化收录情况记录(断续运行)2007-9-27
- PHP自动向图片添加水印
- WPKI技术发展趋势
- 监控
- LIUNX下双网卡安装历险记
- 编辑GridView时如何控制列宽
- 我国博客现存问题与管理对策分析