例如:
if ( this.IsValid )
{
Matrix matrix = new Matrix();
}
Matrix matrix = new Matrix();
Run Code Online (Sandbox Code Playgroud)
编译器警告我说:
"名为' matrix'的局部变量不能在此范围内声明,因为它会给' matrix' 赋予不同的含义,' '已在'子'范围内用于表示其他内容.
这些变量不是在不同的范围内,所以我无法matrix从if语句外部访问第一个吗?
为什么list.index抛出异常,而不是使用任意值(例如-1)?这背后有什么想法?
对我而言,处理特殊价值而非例外情况看起来更清晰.
编辑:我没有意识到这-1是一个潜在有效的价值.不过,为什么不是别的呢?无价值怎么样?
这个问题可能看似主观,但考虑到微软:
让我想知道为什么微软不会推动他们的旗舰语言来证明你不仅可以减少大量的开发时间,还可以减少金钱,而且还可以证明你可以发布下一代的标题,实时交互性不会受到影响.
如果微软要这样做一次,我相信很多AAA开发者也会跳上那辆马车.
我知道WPF更复杂,更灵活,可以考虑做更多的计算.但是由于渲染是在GPU上完成的,因此对于相同的应用程序(功能和视觉),它不会比Winforms更快吗?
我的意思是当你没有运行任何游戏或重型3D渲染时,GPU并没有做繁重的工作,对吧?而CPU总是很忙.
这是一个有效的假设,还是WPF的GPU利用率在其管道中是一个非常小的操作?
编辑:我感兴趣的应用程序是一个3D建模和动画软件,您可以在其中使用3d视口来导航和编辑场景以及场景中的对象.但我想使用WPF,因为它的现代架构,它从头开始.
EDIT2:同样出于我的目的,由于软件的高端要求,我会将DirectX用于应用程序本身.对于使用低端的人或没有专用GPU的计算机,这没关系,因为他们不在我的主要客户区域.就像其他用于电影和游戏的高端3D软件一样,要求功能强大的计算机从应用程序中充分受益是可以理解的.
例如,沿着以下方向:
public bool Intersect (Ray ray, out float distance, out Vector3 normal)
{
}
Run Code Online (Sandbox Code Playgroud)
VS
public IntersectResult Intersect (Ray ray)
{
}
public class IntersectResult
{
public bool Intersects {get;set;}
public float Distance {get;set;}
public Vector3 Normal {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
这对于清晰度,易用性以及最重要的性能而言都更好.
我可以使用吗?:
Assembly.LoadFile
Run Code Online (Sandbox Code Playgroud)
不确定这是否是这样做的?
但是当我尝试这种方法时,它会抛出一个Could not load file or assembly "CustomControlLib"或一个依赖项.该系统找不到指定的文件.
有任何想法吗?
根据所需的颜色数量等间距生成它们.如果指定的计数为8,则看起来像这样:
List<Color> GeneratePastelColors (int count)
Run Code Online (Sandbox Code Playgroud)

我一直认为它在两方面都很好.然后做了这个测试并意识到它不允许重新分配:
int[] a = {0, 2, 4, 6, 8};
Run Code Online (Sandbox Code Playgroud)
工作正常但不是:
int [ ] a;
a = { 0, 2, 4, 6, 8 };
Run Code Online (Sandbox Code Playgroud)
这有什么技术原因吗?我想我会在这里问一下,因为这种行为是我直觉所期望的.
.net c# compiler-construction collections collection-initializer
.net ×9
c# ×9
performance ×2
algorithm ×1
clarity ×1
collections ×1
colors ×1
dictionary ×1
hashtable ×1
indexing ×1
list ×1
python ×1
reflection ×1
winforms ×1
wpf ×1