这篇文章的目的是收集所有日常不存在的整洁而棘手的c#构造和问题。
所以这里是:
问题1 (这是我自己发现的那个)
屏幕上会打印什么?
class Program
{
private static String Function(out String str)
{
str = "Hello ";
return "world!";
}
private static void Main(string[] args)
{
String x = Function(out x);
Console.WriteLine(x);
}
}
有什么想法? :)
第2期创建匿名类型的通用集合(例如List<>或Dictionary<>)是否可能?
var Customer = new { FirstName = "John", LastName = "Doe" };
var customerList = new List<????>();
考虑一下here:
static List<T> CreateList<T>(params T[] values)
{
return new List<T>(values);
}
static void Main(string[] args)
{
var x = new { A = "Hello", B = "world!" };
var list = CreateList(x);
list.Add(new { A = "Hello again", B = "world!" });
}
分享您的发现。谢谢!
答案 0 :(得分:2)
对于第一个示例,x
的值将是方法的返回值,因为方法调用(包括out参数)在分配返回值之前发生。
就列表而言,您应该可以这样做:
var list = new[]
{
new { a = 1, b = "hi" },
new { a = 1, b = "hi" }
}.ToList();
虽然我不确定编译器是否会确定两个匿名类型是相同的。