代码之家  ›  专栏  ›  技术社区  ›  user4570677

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

  •  -1
  • user4570677  · 技术社区  · 9 年前

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

    标题:

    // Header.h
    class Example
    {
    public: 
        bool Func1();
        bool Func2();
    };
    

    中央处理器1

    //Func1.cpp
    #include "Header.h"
    bool Example::Func1()
    {
        return true;
    }
    

    第2页

    //Func2.cpp
    #include "Header.h"
    bool Example::Func2()
    {
        return false;
    }
    

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

    有没有办法像我尝试的那样组织代码,或者我只需要创建另一个类来保存所有不会被进一步修改的方法?

    2 回复  |  直到 9 年前
        1
  •  10
  •   Community kfsone    7 年前

    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
  •  1
  •   user3844214    9 年前

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