我将 Script# 的引用添加到我的标准控制台应用程序中。之后,我试图从那里调用一些方法,但出现以下错误:
我想它发生在下面一行:
string[] lines = s.Split(';');
我的假设是通常的 mscorlib 库没有方法 public string[] Split(char separator)
,但是有 public string[] Split(params char [] 分隔符)
是否可以为 Script# 项目和标准 C# .NET 项目编写具有此类字符串操作的有效代码?由于这个问题,我必须为两个项目编写重复代码,但差异很小。
P.S. 我尝试使用程序集绑定(bind)重定向,如 this SO 中所述。问题,但这对我没有帮助。
最佳答案
编辑:
对我来说唯一的解决方案似乎是扩展方法。您可以在类似于标准 .NET String.Split
的 Script# 字符串类型之上定义扩展方法 Split
,即接受 params char[]
。只有这样您才能使用相同的代码。
string[] lines = s.Split(new char[] { ';' });
或者,在标准字符串类型之上定义扩展,以防 Script# 对扩展有严格要求。但我认为应该不是问题,因为扩展方法只是一个静态方法。
旧答案:在意识到 Script# 不接受 params char[]
后,以下答案变得不正确:
您通过将 char
传递给 s.Split
来调用它。但是,此方法接受 params char[]
。尽管 C# 编译器允许您将 char
传递给 Split
,但它稍后会将其编译为传递 char[]
。因此,如果您想让相同的代码同时适用于 Script# 和 C#,请将您的代码更改为以下方式:
string[] lines = s.Split(new char[] { ';' });
这对 Script# 和 C# 都有效。
关于c# - 在标准 C# .NET 项目中使用 Script# 代码进行字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13260153/