Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#矛盾和有争议的结构_C#_.net - Fatal编程技术网

C#矛盾和有争议的结构

C#矛盾和有争议的结构,c#,.net,C#,.net,这篇文章的目的是收集所有整洁而棘手的c#构造和日常不会发生的问题 下面是: 第1期(这是我自己发现的) 屏幕上会打印什么 class Program { private static String Function(out String str) { str = "Hello "; return "world!"; } private static void Main(string[] args) { Str

这篇文章的目的是收集所有整洁而棘手的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期创建匿名类型的泛型集合(如列表或词典)是否可行

  var Customer = new { FirstName = "John", LastName = "Doe" };
  var customerList = new List<????>();
var Customer=new{FirstName=“John”,LastName=“Doe”};
var customerList=新列表();
考虑一下这个发现:

静态列表CreateList(参数T[]值)
{
返回新列表(值);
}
静态void Main(字符串[]参数)
{
var x=new{A=“Hello”,B=“world!”;
var list=CreateList(x);
添加(新的{A=“你好”,B=“世界!”);
}

分享你的发现。谢谢大家!

对于第一个示例,
x
的值将是方法的返回值,因为方法调用(包括out参数)发生在分配返回值之前

就清单而言,您应该能够做到以下几点:

var list = new[]
{
    new { a = 1, b = "hi" },
    new { a = 1, b = "hi" }
}.ToList();

虽然我不确定编译器是否会确定这两种匿名类型相等。

我有点好奇,当你发现将返回值赋给out参数时会发生什么情况时,你在做什么……因为这个问题没有“答案”,如果您不想关闭它,我建议将其标记为社区wiki。我不会将返回值指定给out参数,返回值与指定给out参数的返回值不同。我不想将其关闭,我想收集C#的有趣方面language@Lu4用迈克尔·艾恩赛德的话说:你知道该怎么做!是的,它会,否则你会得到不同类型的列表:)我的意思是,它可能不会编译。类型统一将(至少在这种情况下)确保代码编译。
var list = new[]
{
    new { a = 1, b = "hi" },
    new { a = 1, b = "hi" }
}.ToList();