我正在努力学习C#而且我还是初学者。最近,我发现了一个允许你练习和训练的网站,但我在工作时遇到了问题。 当我在Visual Studio中键入此代码时,它可以工作,但它不在网站上,并且网站告诉我我有错误!
该网站是:www.codewars.com
代码是:
public class DnaStrand
{
public static string MakeComplement(string dna)
{
int length = dna.Length;
string [] smash = new string[length];
for (int i = 0; i < length; i++)
{
smash[i] = n.Substring(i,1);
}
for (int k = 0; k < length; k++)
{
if (smash[k] == "A") { smash[k] = "T"; }
else if (smash[k] == "T") { smash[k] = "A"; }
else if (smash[k] == "G") { smash[k] = "C"; }
else if (smash[k] == "C") { smash[k] = "G"; }
}
for (int o = 0; o < length; o++)
{
Console.Write(smash[o]);
}
}
}
修改
错误是:
/home/codewarrior/fixture.cs(1,17):错误CS0234:类型或命名空间名称VisualStudio' does not exist in the namespace
Microsoft'。你错过了装配参考吗?
错误:命令失败:mcs -out:/home/codewarrior/test.dll -lib:/home/codewarrior,/runner/frameworks/csharp/mono-4.5,/runner/frameworks/csharp/nunit/bin - langversion:默认-sdk:4.5 -warn:2 -target:library -r:nunit.core.dll,nunit.framework.dll,nunit.core.interfaces.dll,nunit.util,Newtonsoft.Json.dll -r: System.Numerics.dll -r:System.Drawing.dll -r:System.Data.dll -r:System.Data.SQLite.dll -r:System.Data.SQLite.Linq.dll -r:System.IO。 dll -r:System.Linq.dll -r:System.Linq.Dynamic.dll -r:System.Linq.Expressions.dll -r:System.Messaging.dll -r:System.Threading.Tasks.dll -r: System.Xml.dll -r:Mono.Linq.Expressions.dll /home/codewarrior/code.cs /home/codewarrior/fixture.cs
/home/codewarrior/fixture.cs(1,17):错误CS0234:类型或命名空间名称VisualStudio' does not exist in the namespace
Microsoft'。你错过了装配参考吗?
答案 0 :(得分:1)
问题是CodeWars使用Ubuntu + Mono combo for compilation并且您正在尝试使用MSTest框架,而该框架不是套件的一部分。
根据可用的库,我会使用NUnit framework进行测试(因为它已安装)。
答案 1 :(得分:1)
基本上,在CodeWars上编译C#代码的机器没有安装Visual Studio单元测试库。这就解释了为什么它在Visual Studio中编译,因为Visual Studio IDE在安装时附带了测试库,而CodeWars机器没有,因为它似乎使用的是Mono。
根据CodeWars forum thread,您应该使用NUnit
框架,例如:
using NUnit.Framework;
[TestFixture]
public class DnaStrandTest {
[Test]
public void test01() {
Assert.AreEqual("TTTT", DnaStrand.MakeComplement("AAAA"));
}
[Test]
public void test02() {
Assert.AreEqual("TAACG", DnaStrand.MakeComplement("ATTGC"));
}
[Test]
public void test03() {
Assert.AreEqual("CATA", DnaStrand.MakeComplement("GTAT"));
}
}