小编haz*_*eal的帖子

如何在运行时生成未知类型的实例?

我在C#中得到以下内容:

string typename = "System.Int32";
string value = "4";
Run Code Online (Sandbox Code Playgroud)

应该采用这两个字符串来生成具有指定值的指定类型的对象...

结果应该是:

object o = CreateUnknownType(typename, value);
...
Int32 test = (Int32)o;
Run Code Online (Sandbox Code Playgroud)

.net c# types runtime

12
推荐指数
2
解决办法
2万
查看次数

最快的二进制读写方式

我目前正在优化一个应用程序,其中一个经常执行的操作是读写二进制文件.我需要两种类型的功能:

Set(byte[] target, int index, int value);

int Get(byte[] source, int index);
Run Code Online (Sandbox Code Playgroud)

有符号和无符号short,int和long都需要这些函数,包括大端和小端序.

以下是我所做的一些例子,但我需要对优缺点进行评估:

第一种方法是使用Marshal将值写入byte []的内存中,第二种方法是使用普通指针来完成此操作,第三种方法使用BitConverter和BlockCopy来执行此操作

unsafe void Set(byte[] target, int index, int value)
{
    fixed (byte* p = &target[0])
    {
        Marshal.WriteInt32(new IntPtr(p), index, value);
    }
}

unsafe void Set(byte[] target, int index, int value)
{
    int* p = &value;
    for (int i = 0; i < 4; i++)
    {
        target[offset + i] = *((byte*)p + i);
    }
}

void Set(byte[] target, int index, int value)
{
    byte[] data = …
Run Code Online (Sandbox Code Playgroud)

c# binary file-io

11
推荐指数
2
解决办法
6853
查看次数

如何在C#中检测空引用?

如何在C#中确定对象引用是否为空?如果它为null,则抛出异常?

即如果我传入了类引用,我不知道它是否为null.

c#

4
推荐指数
3
解决办法
1万
查看次数

C#:在 Socket.BeginReceive 上没有调用 AsyncCallback

我对 System.Net.Sockets.Socket 的异步 Receive 方法有一个严重的问题。

这是我用来打开连接的代码:

_socket = new Socket(endpoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
_socket.Connect(endpoint);

byte[] buffer = new byte[1024];
_socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, buffer);
Run Code Online (Sandbox Code Playgroud)

这是回调方法:

private void ReceiveCallback(IAsyncResult result)
{
     byte[] buffer = (byte[])result.AsyncState;
     int count = _socket.EndReceive(result);

     if (count > 0)
     {
          // Do something
     }

     buffer = new byte[1024];
     _socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, buffer);
}
Run Code Online (Sandbox Code Playgroud)

问题是 ReceiveCallback 永远不会被调用,尽管连接了套接字。

谁能帮我解决这个问题?

c# sockets

4
推荐指数
1
解决办法
5614
查看次数

标签 统计

c# ×4

.net ×1

binary ×1

file-io ×1

runtime ×1

sockets ×1

types ×1