当你有像这样的代码:
Bitmap bmp = new Bitmap ( 100, 100 );
Graphics g = Graphics.FromImage ( bmp );
Pen p = new Pen ( Color.FromArgb ( 128, Color.Blue ), 1 );
Brush b = new SolidBrush ( Color.FromArgb ( 128, Color.Blue ) );
g.FillEllipse ( b, 0, 0, 99, 99 );
g.FillRegion ( b, pictureBox1.Region );
pictureBox1.BackColor = Color.Transparent;
pictureBox1.Image = bmp;
Run Code Online (Sandbox Code Playgroud)
你必须丢弃笔和刷子吗?那么bmp和g呢?
我的主要问题是,如果要手动处理这些问题,为什么他们一旦离开范围就不会被处置?如果您没有手动处理它们会发生什么?这是人们手动执行此操作的延迟吗?
1 ..属性的使用是否会导致性能开销?想想一个类:
public class MyClass
{
int Count {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
它有10个属性(属性是类,其中属性类本身比MyClass本身大,如:
public class FirstAttribute : Attribute
{
int A,B,C,D,E,F,G,H,I,J ... {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
2 ..每次MyClass实例化这些属性中的10个是内存开销吗?(FirstAttribute其大小的10倍MyClass将用其中的10个装饰,因此使实际对象本身与其上装饰的属性的总大小相比这么小.)这是一个问题吗?
3 ..这种情况对于结构是否有任何不同(结构是值类型和属性是引用类型)?
4 ..存储在内存中的属性与它们所附着的对象有关吗?他们是如何联系在一起的?
5 ..是否MyClass在初始化或使用反射检索属性时初始化属性?
如下例所示:
switch ( myObj.GetType ( ) )
{
case typeof(MyObject):
Console.WriteLine ( "MyObject is here" );
break;
}
Run Code Online (Sandbox Code Playgroud) 这可能是一个奇怪的问题,但如果我想要定义一个整数列表:
1, 2, 3, 4, 5, 6, 7, 8, 9
Run Code Online (Sandbox Code Playgroud)
我需要使用;角色吗?
[ 1; 2; 3; 4; 5; 6; 7; 8; 9 ]
Run Code Online (Sandbox Code Playgroud)
代替?:
[ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
Run Code Online (Sandbox Code Playgroud)
在我看来,,它更自然,更容易在眼睛上.只是想知道背后使用的想法;?(不批评)
所以类似于:
public static class StaticClass {}
public class InstanceClass
{
static StaticClass StaticProperty {get;set;}
public InstanceClass()
{
InstanceClass.StaticProperty = StaticClass;
}
}
Run Code Online (Sandbox Code Playgroud)
我以为可以做到这一点,但编译器返回这些错误:
静态类型不能用作参数
静态类型不能用作返回类型
编辑:我知道这不起作用,但为什么?我想StaticClass存储在内存中的某个地方,因此可以允许其他变量在同一个内存中引用它,对吧?
EDIT2:其中一个用例是这样的:
假设您收集了5个不同的静态类,没有源代码,并且它们执行通用的东西,因此您希望通过单个静态类方便地访问它们.你可以这样做:
public static class GenericStuff
{
public LinearAlgebra LinearAlgebra {get;set;}
public StringUtilities String {get;set;}
public GeometryOps Geometry {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
并使用它像:
GenericStuff.LinearAlgebra.GetAngleBetweenVectors(v0, v1);
Run Code Online (Sandbox Code Playgroud)
您可以想到的其他一些用例.
这是显示问题的图片.看看右下角.
谁知道如何摆脱它?
设置LayoutStyle以VerticalStackWithOverflow修复它,但也将项目水平居中,这是我不想要的.
我只想要像照片中的垂直堆栈,但右下角没有黑色线条.

我的一位同事告诉我,实现接口会带来开销.这是真的?
我不关心微观优化; 我只是想知道这需要更深入的细节.
在我TreeView,我有MouseDown/ MouseUp等等的不同事件,但当我做得足够快时,TreeView扩展/折叠TreeNode.我不想要这种烘焙行为.
有没有办法禁用它?
我读到,Math.Pow能够处理分数幂的实现非常复杂.当你不需要分数幂时,为什么没有一个版本为指数制作一个更快的版本?
当我查找它时,它们将其列为具有.Checked属性.但是在Visual Studio和msdn上,它都没有列出任何Checked属性的孩子.
ContextMenuStrip menu = new ContextMenuStrip ( );
var menuItem = menu.Items.Add ( "CheckedItem" );
//menuItem.Checked?
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?
.net ×9
c# ×9
performance ×3
reflection ×2
winforms ×2
attributes ×1
contextmenu ×1
dispose ×1
f# ×1
gdi+ ×1
interface ×1
java ×1
list ×1
math ×1
styling ×1
syntax ×1
toolstrip ×1
treeview ×1
wpf ×1