Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
与C#中存在的提取/插入运算符重载类似的替代方法++;_C#_Packet - Fatal编程技术网

与C#中存在的提取/插入运算符重载类似的替代方法++;

与C#中存在的提取/插入运算符重载类似的替代方法++;,c#,packet,C#,Packet,我目前正在为一个C#项目编写一个数据包类 在我的包类的C++版本中,我有提取和插入操作符,所以可以用尽可能少的行来构造一个具有多个整数/字符串/数据包的包。 std::shared_ptr<Packet> p = std::make_shared<Packet>(PacketType::Test); //Create packet of type (Test) *p << 3 << "John" << "Hates" <<

我目前正在为一个C#项目编写一个数据包类

在我的包类的C++版本中,我有提取和插入操作符,所以可以用尽可能少的行来构造一个具有多个整数/字符串/数据包的包。
std::shared_ptr<Packet> p = std::make_shared<Packet>(PacketType::Test); //Create packet of type (Test)
*p << 3 << "John" << "Hates" << "Susan"; //append data to packet
myConn.SendPacket(p); //queue packet to be sent

有没有什么方法可以在不影响性能的情况下减少代码行数?我不希望将数据填充到字符串中。我希望它保持为二进制数据。

您可以定义
Append
方法,如下所示:

public void Append(params object[] args)
{
    // todo: save your args here
}
params
关键字将允许您添加任意数量的参数(就像在
printf
函数中一样)。用途是:

Packet p = new Packet(PacketType::Test); //Create packet of type (Test)
p.Append(3, "John", "Hates", "Susan");
myConn.SendPacket(p); //queue packet to be sent

使用一些随机的字符串作为分隔符,然后在收到字符串后将其拆分。我特别指出,我不希望将数据填充到字符串中。我希望它保持为二进制数据。不过,感谢您的建议。另外,您还可以查看每个参数的类型(比如字符串、字符、整数等),并在Append函数中单独处理每个类型。最近在C#()中添加了“模式匹配”switch语句,使这变得更容易。
Packet p = new Packet(PacketType::Test); //Create packet of type (Test)
p.Append(3, "John", "Hates", "Susan");
myConn.SendPacket(p); //queue packet to be sent