是否可以像在 c++ 中那样在多个 .cs 文件中展开 C# 类? [复制]

Posted

技术标签:

【中文标题】是否可以像在 c++ 中那样在多个 .cs 文件中展开 C# 类? [复制]【英文标题】:Is it possible to spread out a C# class in multiple .cs files like in c++? [duplicate] 【发布时间】:2015-12-05 19:50:27 【问题描述】:

在 C++ 中,您可以在单独的 cpp 文件中定义类的各个部分。比如,

标题:

// Header.h
class Example

public: 
    bool Func1();
    bool Func2();
;

CPP 1

//Func1.cpp
#include "Header.h"
bool Example::Func1()

    return true;

CPP 2

//Func2.cpp
#include "Header.h"
bool Example::Func2()

    return false;

在 C# 中可以做类似的事情吗?我正在制作服务器和客户端类,并且有些方法永远不会被修改(例如,SendString、GetString、SendInt、GetInt 等),我想将它们与将根据内容主动更新的方法分开正在接收的数据包类型。

有什么方法可以像我尝试的那样组织代码,还是我只需要创建另一个类来保存所有不会进一步修改的方法?

【问题讨论】:

Partial class @DrewJordan 您可以将其发布为对其他用户有用的答案,许多用户不阅读 cmets 来寻找答案:) ***.com/questions/3601901/why-use-partial-classes 将您的问题更多地更改为您在 c# 中尝试过的内容,而不是展示您在 c++ 中的内容!并且可能去掉 c++ 标签,我们(“The c++ shark tank”)不喜欢它! @πάντα ῥεῖ “你对我来说已经死了。” - 鲨鱼坦克的声音。 【参考方案1】:

Partial class 是一种方法 - 通常用于拆分自动生成的和用户编写的代码。请参阅When is it appropriate to use C# partial classes? 了解使用它的情况。

重构代码以将类保存在单个文件中可能会更好,因为它在 C# 源代码中更为常见。

一种选择是在小接口上使用扩展方法,并将单独的紧密组合的方法放入单独的静态类中。

 // Sender.cs
 // shared functionality with narrow API, consider interface
 class Sender
 
     public SendByte(byte byte);
 

 // SenderExtensions.cs
 // extensions to send various types 
 static class SenderExtensions
 
     public static SendShort(this Sender sender, uint value)
     
        sender.SendByte(value & 0xff);
        sender.SendByte(value & 0xff00);
     
 

【讨论】:

【参考方案2】:

是的,我们可以在 C# 中做类似的事情。我们在 C# 中有部分类。

【讨论】:

以上是关于是否可以像在 c++ 中那样在多个 .cs 文件中展开 C# 类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

C# 或 C++ ;可以像在 CE 中那样修改内存吗? [关闭]

我们可以像在处理中那样在 PyQt5 中绘制 3D/2D 对象吗?

是否可以在MATLAB中做一个向量数组?

为啥我们不能像在 java 中那样使用 new ClassName() 而不是使用 new ClassName?

是否可以像在 Vuforia 中一样在 ARKit 中跟踪对象?

用VC写了一个文本编辑器,怎样将输入里面的关键字变色实现高亮状态,就像在VC里面写代码输入C++关键字那样