小编pli*_*nth的帖子

为复杂的C++类系统创建C#绑定?

我有现有的C++ lib,它包含许多不同的类.一些示例用法应该包括将一个类的实例传递给另一个类的构造函数/方法.

我打算使用C++/CLI为这些C++类提供C#绑定,因此我不必移植整个C++代码.

我已经可以通过创建另一个类隐藏用户现有C++代码中使用的所有类,从而以" Facade "的方式完成此操作.但是,我想要的是向用户提供具有相同方法签名的相同类.

对此有任何指导或建议吗?

PS.我已经看了一些现有的开源C#到C++绑定项目.但他们似乎使用了许多不同的方法来做到这一点,我并不是真的理解它.

c# c++ binding wrapper

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

在Vb.net中将Arraylist转换为字符串

如何在vb.net中将arraylist转换为逗号定义的字符串

我有一个带ID值的arraylist

arr(0)=1
arr(1)=2
arr(2)=3
Run Code Online (Sandbox Code Playgroud)

我想将其转换为字符串

Dim str as string=""
str="1,2,3"
Run Code Online (Sandbox Code Playgroud)

.net vb.net

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

inout参数有很好的用途吗?

是否有很好用的inout(参考.NET中的C#,byref(比如输出参数)参数)?
我觉得由参数用作输入和返回值引起的混淆比out参数的数量增加或返回数组或返回自定义类更糟糕.

.net calling-convention

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

C中的AND/OR链

我对此非常肯定,但为了安全起见:

C标准是否保证AND链(A && B && ...)从左到右进行评估,一旦有0,评估就会停止?

OR的问题相同.(只要有1)

我可以依靠其他C风格的语言吗?

这段代码是否安全:

if (somePtr!=NULL && somePtr->someMember==123)
{
     ...
}
Run Code Online (Sandbox Code Playgroud)

c expression-evaluation

2
推荐指数
1
解决办法
162
查看次数

如何使用pdflib删除pdf中的字符

我想使用 PDF lib 删除 PDF 中的隐藏空间。

当我在 PDF 中提取单词“Gregor”时,它会显示为“Gre gor”,但我真的希望它像“Gregor”一样。

这可能是什么原因?或者,我怎样才能避免那些“隐藏空间”?

c# pdf pdflib

2
推荐指数
1
解决办法
1552
查看次数

如何定义具有两个通用类型和两个类型约束的方法?

我的方法定义是

public ActionResult _Create3<T>() where T:IMyClass, new()
Run Code Online (Sandbox Code Playgroud)

但我想定义两种通用类型

public ActionResult _Create3<T, G>(G content) where T:IMyClass, new()
Run Code Online (Sandbox Code Playgroud)

G型也必须使用ImyClass接口,但我不知道在哪里定义两种类型!

例如,如果可能写:

public ActionResult _Create3<T, G>(G content) where {T:IMyClass, G:IMyClass}, new()
Run Code Online (Sandbox Code Playgroud)

但得到错误.

谢谢你的回答

c# generics

2
推荐指数
1
解决办法
494
查看次数

什么构成昂贵的方法或资源?

经常提到异常是昂贵的,并且.NET中的各种方法也是昂贵的.

究竟什么构成了.NET中昂贵的方法?

这是该方法处理的时间吗?EG我使用WebClient对象获得了网页的响应流(这不是异步),当获得响应并将其分配给变量时,需要一段时间来逐步完成这行代码.也许是因为网页本身是图形密集和大.为了看到所花费的时间,我知道我可以使用秒表或计时器(这两者之间存在细微差别,我不记得了).

还是采取了资源?如果是这样,查看方法所需资源的最佳方法是什么?我知道我可以使用其中一种GC方法或分析器.有什么其他方法吗?

c#

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

C#套接字异常延迟

我正在使用C#和XNA进行一个小型在线多人乒乓球比赛.

我使用套接字在我的个人LAN上的两台计算机之间传输数据.它工作正常.

问题在于速度:转移很慢.

当我ping第二台计算机时,它显示2毫秒的延迟.我在我的代码中设置了一个小计时器,它显示了大约200毫秒的延迟.即使服务器和客户端在同一台计算机上(使用127.0.0.1),延迟仍然大约为15毫秒.我认为这很慢.

以下是我的代码的一些片段:

server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind(new IPEndPoint(IPAddress.Any, port));
server.Listen(1);
// Begin Accept
server.BeginAccept(new AsyncCallback(ClientAccepted), null);
Run Code Online (Sandbox Code Playgroud)

在ClientAccepted中,我设置了一个NetworkStream,一个StreamReader和一个StreamWriter.这是我想要更新玩家位置时发送消息的方式:

string message = "P" + "\n" + player.Position + "\n";
byte[] data = Encoding.ASCII.GetBytes(message);
ns.BeginWrite(data, 0, data.Length, new AsyncCallback(EndUpdate), null);
Run Code Online (Sandbox Code Playgroud)

EndUpdate唯一做的就是调用EndWrite.这是我收到数据的方式:

message = sr.ReadLine();
Run Code Online (Sandbox Code Playgroud)

它不会阻止我的游戏,因为它是在第二个线程上.

这些是我尝试的东西: - 使用IP而不是TCP - 使用二进制消息而不是文本 - 使用IPv6而不是IPv4没有任何帮助.

关于如何改善延迟的任何想法?

谢谢

c# sockets latency

0
推荐指数
1
解决办法
5565
查看次数