我喜欢创建一个充满自定义函数的文件,我可以在其他项目中使用它。现在我还没有完全理解如何解决这个问题,通常用像php这样的语言,你只需要创建php文件然后去包含(“cust_lib.php”)或者调用任何文件。
现在我认为这个过程涉及到库有自己的命名空间,然后使用custom_lib;或者脚本中的custom_lib ::(我不想讨论哪个是最好的方法)。
这是对的吗?或者我应该创建库并将其转换为.dll,如果是这样,我该怎么做呢,dll里面有什么样的语法等。
然而,如果它只是在一个项目中的文件,那么我不需要沿着那条路走下去吗?我可以创建命名空间并使用它吗?
这就是我目前正在努力的事情,并认为它会是这样的
namespace Custom_Lib{
~~functions to go here~~
}
然而功能必须存在于一个类内吗?所以这就像
namespace Custom_Lib{ class custom_lib{ public string function1(string input){ return input; } } }
所以一些帮助,指针,例子将受到赞赏,所以我可以围绕这个
谢谢, PSY。
(是的,我把它们称为函数,它们来自长篇php / js等背景)
答案 0 :(得分:6)
通常的方法是创建一个类库项目,将您的类和方法放在该项目中,确保您要公开的那些是public
。然后在客户端项目中添加对生成的dll文件的引用,您将可以使用类库中的功能。
即使你决定将它全部放在一个文件中,我仍然建议你把它变成一个类库,因为我想这会使它更容易维护。例如,请考虑以下方案:
在这两种情况下,将它作为一个单独的项目保存将为您提供便利:
关于语法问题:是的,所有方法都必须存在于类中。但是,如果类只是方法的容器,则可以创建它(以及方法static
):
public static class CustomLib
{
public static string GetSomethingInteresting(int input)
{
// your code here...
}
}
这样您就不需要创建CustomLib
的实例,但只需调用该方法:
string meaningOfLife = CustomLib.GetSomethingInteresting(42);
答案 1 :(得分:1)
除了弗雷德里克·莫尔克(FredrikMörk)精心编写和现场反应之外,我还要补充一下:
相反,将相关方法分组到较小的类中,以便您和库的使用者更容易找到他们想要的功能。此外,如果您的库使用类级变量,则可以限制其范围。
此外,如果您稍后决定向库中添加线程功能,或者您的库在多线程应用程序中使用,静态方法可能会成为您的噩梦。这是一个严重的问题,不应该被忽视。
答案 2 :(得分:0)
这里没有问题。你自己回答了。是的,您必须构造一个包含所有辅助方法的类。是的,如果要在多个项目中重用它,或者只是将源文件添加到项目中,您可以将其编译为dll。
通常我将helper类和所有函数声明为static,以避免每次使用它时启动类。