这可能是一个广泛的问题,但这是我不太清楚和非常好奇的事情.
通常,对于某些问题,我听到的原因是因为Generics在.NET 1.0中不可用.这让我想到以下两件事之一:
之前没有想到泛型,所以开发人员在.NET 1.0之后提出它可能会极大地影响C#和.NET的设计,但由于已做出的决定(向后兼容性)而无法实现.
泛型从一开始就一直在计划中,因此不使用.NET 1.0发布它的唯一问题是无法在2.0之前使用它.但除此之外,没有引入或错误的冗余功能,提出了不可逆转的决定.
我大多假设#1,但实际情况是#2?
我得到的值正确显示使用:
[DefaultValue ( typeof ( Color ), "255, 0, 0" )]
public Color LineColor
{
get { return lineColor; }
set { lineColor = value; Invalidate ( ); }
}
Run Code Online (Sandbox Code Playgroud)
但是在我重新加载项目后使用了控件,这个值被设置为White,我可以调用Reset来再次回到Red,但是我不明白这个问题.
除非我从默认值手动更改值,否则您应该如何设置默认值并确保保留默认值?
实际上我也这样做,它将Back和ForeColor设置为这些值,VS属性编辑器将它们显示为从默认值更改它们.
这是错的吗?
public CoolGroupBox ( )
{
InitializeComponent ( );
base.BackColor = Color.FromArgb ( 5, 5, 5 );
base.ForeColor = Color.FromArgb ( 0, 0, 0 );
}
Run Code Online (Sandbox Code Playgroud) 我尝试了这个以及HorizontalAlignment,而不是TextAlignment,但它们仍然显示为左对齐.
<Window x:Class="EditorWindow.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
DataContext="{Binding RelativeSource={RelativeSource Self}}"
Title="MainWindow" Height="800" Width="600">
<Grid>
<ListView ItemsSource="{Binding Effects}">
<ListView.View>
<GridView>
<GridViewColumn Width="100" Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Width="100" Header="Type" >
<GridViewColumn.CellTemplate >
<DataTemplate>
<TextBlock Text="{Binding Type}" TextAlignment="Center"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="100" Header="Opacity" DisplayMemberBinding="{Binding Opacity}" />
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud) 我以编程方式创建椭圆形状但我找不到任何指定其位置的属性.Lines具有X1,Y1,X2,Y2,但椭圆形状上没有中心,位置,X,Y等.我怎样才能做到这一点?
我试图找到可用的方法,但找不到它.没有contains.我应该用index吗?我只是想知道项目是否存在,不需要它的索引.
当你需要拥有非常小的物体时,比如说它包含2个浮动属性,并且你将拥有数百万个不会立即被"摧毁"的物体,结构是更好的选择还是类?
就像在xna中作为库一样,有point3s等作为结构但是如果你需要长时间保持这些值,它会造成性能威胁吗?
可能重复:
计数与集合中的长度与大小
在.NET中,几乎所有集合都具有该.Count属性.
有时候我想知道它是否更好Array,直接,但不是通过ICollection.
这只是你在脑海中为数组做出异常的事情.
那么在这种情况下,"更正确"还是"更统一"更好?
我不确定这是否是一个愚蠢的问题,但我正在阅读VS 2010附带的教程,并且有一个这样的函数:
let rec factorial n = if n=0 then 1 else n * factorial (n-1)
Run Code Online (Sandbox Code Playgroud)
这个递归函数用rec关键字标记的原因是什么?
这样编译器可以确保它是递归的,所以可以进行某些优化吗?
如果排除它会怎么样?
例如:
if ( this.IsValid )
{
Matrix matrix = new Matrix();
}
Matrix matrix = new Matrix();
Run Code Online (Sandbox Code Playgroud)
编译器警告我说:
"名为' matrix'的局部变量不能在此范围内声明,因为它会给' matrix' 赋予不同的含义,' '已在'子'范围内用于表示其他内容.
这些变量不是在不同的范围内,所以我无法matrix从if语句外部访问第一个吗?