c# - 在标准 C# .NET 项目中使用 Script# 代码进行字符串操作

标签 c# .net string script#

我将 Script# 的引用添加到我的标准控制台应用程序中。之后,我试图从那里调用一些方法,但出现以下错误:

MissingMethodException

我想它发生在下面一行:

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/

相关文章:

c# - 连接字符串内的隔离级别

c# - Lambda/LINQ 选择最小值

c# - 加载外部字体并在 C# 中使用它

c# - 带有 EditItemTemplate 的面板 DefaultButton 和 GridView 控件

Java parseFloat 似乎表现不一致

c# - 在没有上下文的情况下获取应用程序的完全限定根 URL?

c# - C#-具有单个方法和2个名为param的xml-rpc

.net 开源和运行平台的选择

java - 格式化字符串解析

java - 是否可以使用字符串的内容来转换对象?