gpt4 book ai didi

c# - C# 中提取/插入运算符重载的类似替代方案存在于 C++ 中

转载 作者:行者123 更新时间:2023-11-30 17:29:27 24 4
gpt4 key购买 nike

我目前正在为一个 C# 项目开发一个 Packet 类。

在我的 Packet 类的 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

我正在尝试弄清楚是否有一种方法可以在 C# 中获得类似的功能,或者我是否真的会被迫为输入数据包/从数据包中提取的每条数据单独一行。

在 C# 中,我想象等效项看起来像这样......

Packet p = new Packet(PacketType::Test); //Create packet of type (Test)
p.Append(3);
p.Append("John");
p.Append("Hates");
p.Append("Susan");
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

关于c# - C# 中提取/插入运算符重载的类似替代方案存在于 C++ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51141050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com