我正在为我编写的一些 .net 代码编写单元测试。
我熟悉这样编写代码:
int expected = 10;
int actual = multiplyByTwo(5);
Assert.AreEqual(expected, actual);
Run Code Online (Sandbox Code Playgroud)
在参数是整数的情况下,很清楚期望代码做什么。
当传入的参数是对象时,代码会做什么?
如果我编写了一个名为 的自定义类MyClass,那么如何控制Assert.AreEqual类型对象的通过和失败时间MyClass?
我正在查看我在C#中编写的一段代码:
if(string.IsNullOrEmpty(param1) && string.IsNullOrEmpty(param2) && string.IsNullOrEmpty(param3))
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
并决定使其更具可读性/简洁性
if(string.IsNullOrEmpty(param1+param2+param3))
{
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
但看着它我忍不住畏缩.你对此有何看法?你有没有做过这样的事情,你是否适用它?
注意:此行之前的代码将通过添加特定项来操作集合,具体取决于param(param1,param2,param3)是否为空.此if语句用于验证/错误处理.
我有这个:
if (input.Text.ToUpper() == "STOP")
Run Code Online (Sandbox Code Playgroud)
但是有很多可能的值,我无法像这样单独指定它们:
if (input.Text.ToUpper() == "STOP" || input.Text.ToUpper() == "END")
Run Code Online (Sandbox Code Playgroud)
有没有办法可以做到这样的事情:
if (input.Text.ToUpper() == "STOP", "END", "NO", "YES")
Run Code Online (Sandbox Code Playgroud)
那么使用STOP,END,NO或YES会完成任务吗?
使用任何包含将不起作用,其他时候接受的单词将在其中包含单词STOP和END.
扩展方法可以说:List作为参数之一吗?
public static IEnumerable<XElement> GetSequenceDescendants(this IEnumerable<XElement> elements, params List<XName> names)
{
//do something
}
Run Code Online (Sandbox Code Playgroud)
扩展方法可以对参数类型有任何限制吗?
我已经看到两种方式都进行了比较.是否有性能差异或仅仅是个人偏好?
我看到它在这个答案中被使用:
我有以下内容:
if (model.PartitionKey.Substring(2, 2) == "05" ||
model.PartitionKey.Substring(2, 2) == "06")
Run Code Online (Sandbox Code Playgroud)
我更喜欢这个.是否有更简洁的方法来编码,我不必重复model.PartitionKey两次?
我需要将一些对象存储为XML文件,以便保存数据并在以后加载.我编码了这个,它对我有用:
public static Project Load(String file)
{
using (var stream = System.IO.File.OpenRead(file))
{
var serializer = new XmlSerializer(typeof(Project));
return serializer.Deserialize(stream) as Project;
}
}
public static void Save(Project p, String file)
{
using (var writer = new System.IO.StreamWriter(file))
{
var serializer = new XmlSerializer(p.GetType());
serializer.Serialize(writer, p);
writer.Flush();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我需要使用其他类型的对象执行此操作,并且我不想真正为每个对象类复制/粘贴这些方法.
是否可以将对象类传递给方法并使这些方法对任何对象类都通用?
首先,如果标题不清晰或具有描述性,请对不起; 我不知道该写些什么.
我想知道是否有更好的方法来执行此操作:
bool result = variable1.innerValue.level2.innerValue == 1 ||
variable1.innerValue.level2.innerValue == 2 ||
variable1.innerValue.level2.innerValue == 3;
Run Code Online (Sandbox Code Playgroud)
我们写不出类似的东西:
bool result = variable1.innerValue.level2.innerValue == (1 || 2 || 3);
Run Code Online (Sandbox Code Playgroud)
这将产生语法错误.
有任何想法吗?
我必须以简短而智能的方式实现一个非常大的If和else语句.
例如 :
If(seg.status =="hl"||seg.status =="hl2"||seg.status =="hl3"||seg.status =="hl4"||seg.status =="hl4"||seg.status =="hl5"||seg.status =="hl6"||seg.status =="hl7")
Run Code Online (Sandbox Code Playgroud)
进入小而聪明的方式
c# ×9
generics ×2
.net ×1
assert ×1
collections ×1
if-statement ×1
linq ×1
linq-to-xml ×1
string ×1
unit-testing ×1
xml ×1