(..|. .. .|..)运算符中表达式的优先级顺序是什么- 从左到右,从右到左或其他什么?
如果stackalloc与参考类型一起使用如下
var arr = stackalloc string[100];
Run Code Online (Sandbox Code Playgroud)
有一个错误
不能获取地址,获取大小,或声明指向托管类型的指针('string')
为什么会这样?为什么CLR不能声明指向托管类型的指针?
通常,要找到具有最大值属性的元素,我喜欢这样
var itemWithMaxPropValue = collection.OrderByDescending(x => x.Property).First();
Run Code Online (Sandbox Code Playgroud)
但从性能的角度来看,这是好方法吗?也许我应该做这样的事情?
var maxValOfProperty = collection.Max(x => x.Property);
var itemWithMaxPropValue = collection
.Where(x => x.Property == maxValueOfProperty).First();
Run Code Online (Sandbox Code Playgroud) .始终调用带有运算符的扩展方法,即使对象为空而不抛出NullReferenceException.通过使用运算符,?.它永远不会调用.例如:
using System;
public class Program
{
public static void Main()
{
A a = null;
a.b(); // works
a?.b(); // doesn't work
}
}
public class A { }
public static class ext
{
public static void b(this A a)
{
Console.WriteLine("I'm called");
}
}
Run Code Online (Sandbox Code Playgroud)
为什么在这种情况下不调用扩展方法?这是一个ambiguos功能?