我的要求是每种类型T,我有许多元素(在1-30 +之间),首先我需要随机项目,然后我需要下一个,当我到达最后一个项目时,它应该返回第一个一个等等.
所以说T是Icon,而集合是Images(实例).
我希望有:
// program start:
Icon icon = RandomIcon(); // say 5th one for this case
// user clicks next icon:
icon = current++; (6, 7, 8, 1, 2, ...)
Run Code Online (Sandbox Code Playgroud)
对我来说,循环链表是有意义的,除了我必须做O(n),其中n是随机索引.
我希望得到最清洁,最好的实施,因此这个问题.
我得到编译错误,因为编译器认为Path.Combine引用了我的字段,但我希望它引用类System.IO.Path.除了总是必须编写类似System.IO.Path.Combine()的FQN之外,还有一种处理这个问题的好方法吗?
using System.IO;
class Foo
{
public string Path;
void Bar(){ Path.Combine("",""); } // compile error here
}
Run Code Online (Sandbox Code Playgroud) 当我尝试在运行时更改CroppedBitmap的SourceRect属性时,没有任何反应.没有错误,属性值实际上没有改变.
我正在尝试做精灵动画.我有一个包含spritesheet的BitmapSource,它是一个包含精灵不同姿势网格的单个位图.然后我有一个CroppedBitmap,它有spritesheet作为Source,还有一个SourceRect,它从spritesheet中拉出一个姿势.在运行时,当我想要设置动画时,我正在尝试更改CroppedBitmap的SourceRect属性,以从较大的位图中拉出不同的姿势; 但是,如上所述,新的财产价值根本不坚持.这是最奇怪的事情.
这是一些示例XAML:
<UserControl.Resources>
<BitmapImage x:Key="spritesheet" UriSource="Sprites/elf.png"/>
</UserControl.Resources>
<Image>
<Image.Source>
<CroppedBitmap x:Name="image" Source="{StaticResource spritesheet}"
SourceRect="240 640 240 320"/>
</Image.Source>
</Image>
Run Code Online (Sandbox Code Playgroud)
代码隐藏试图这样做:
var newRect = new Int32Rect(...);
Debug.WriteLine(" Before: " + image.SourceRect);
Debug.WriteLine("Assigning new value: " + newRect);
image.SourceRect = newRect;
Debug.WriteLine(" After: " + image.SourceRect);
Run Code Online (Sandbox Code Playgroud)
这给了我这个调试输出:
Before: 240,640,240,320
Assigning new value: 240,0,240,320
After: 240,640,240,320
Run Code Online (Sandbox Code Playgroud)
所以它实际上是将新的矩形(Y = 0)分配给属性; 没有例外; 但之后,财产价值根本没有改变(Y仍然是640).
关于为什么会发生这种情况的任何想法,以及如何解决它?
在某些情况下,需要将值类型的实例视为引用类型的实例.对于这种情况,可以通过名为boxing的过程将值类型实例转换为引用类型实例.当盒式化值类型实例时,将在堆上分配存储,并将实例的值复制到该空间中.对此存储的引用放在堆栈上.盒装值是一个对象,一个包含值类型实例内容的引用类型.
在维基百科中有一个Java的例子.但是在C#中,有哪些情况需要打包一个值类型?或者更好/类似的问题是,为什么人们想要在堆上(盒装)而不是堆栈上存储值类型?
可能重复:
推荐的编程字体?
编写代码时使用什么字体?
具体来说,这个字体应该是:
我目前使用Lucida Typewriter,Bold,Size 12.
我想返回两个值,其中一个是一个新对象.我可以这样做std::pair:
class A {
//...
};
std::pair<A*, int> getA()
{
A* a = new A;
//...
}
Run Code Online (Sandbox Code Playgroud)
为了使代码异常安全,我想做:
std::pair<std::auto_ptr<A>, int> getA()
{
std::auto_ptr<A> a(new A);
//...
}
Run Code Online (Sandbox Code Playgroud)
但是这不会编译,因为在auto_ptr不修改被复制的情况下无法auto_ptr复制.好吧,这意味着auto_ptr不像其他类型那样构成(再一次).在这种情况下返回新对象的好方法是什么?
一种选择是返回a shared_ptr而另一种是inout引用.但我正在寻找其他替代方案.我可以这样做:
class AGetter
{
void getAExecute()
{
//...
// set a_ and i_
}
std::auto_ptr<A> getA() const
{
return a_.release();
}
int getInt() const
{
return i_;
}
private:
std::auto_ptr<A> a_;
int i_;
};
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
用什么代码表示PHP处理页面需要多长时间?
此外,执行了多少个SQL查询来生成该页面?
我刚刚开始使用VS2008为SQL 2008编写clr存储过程.在编写c#代码时,我习惯于单独的"测试项目",我将放置所有单元测试代码,但是我乍一看似乎是与存储过程的clr sql项目不能具有相同的设置.感觉就像这样可以做到,而且我缺少一些配置参数,但我不确定那些可能是什么.
我在用
我的要求是:
有谁知道如何让单元测试项目正确解密存储过程到服务器,连接到SQL服务器,并允许我单步执行单元测试到服务器上的存储过程?
********更新
感谢大家到目前为止的答案,但他们并不是我正在寻找的东西.
下面的Mark Seemann的答案是一个我不了解的有趣方法,在将数据库重置为已知状态时我肯定会使用.但是,我正在寻找调试CLR存储过程,并且它没有出现Mark的方法将允许我从我的单元测试项目,到SQL服务器,并调试位于服务器上的代码.
我希望实际调试服务器上的C#,就像下面列出的解决方案pho3nix一样.但是,使用此标准方法,您需要使用"Test.sql"文件编写测试脚本,而不是使用Visual Studio中的单元测试项目.
我希望我的解决方案中有两个项目,一个用于我的CLR存储过程,另一个用于我的单元测试项目.当我想在我的单元测试项目中运行我的测试时,我希望对我的CLR存储过程项目所做的所有更改都将发布到服务器,测试项目将开始执行,如果我在CLR中设置了一个断点单元测试开始测试存储过程时它将在服务器上中断,然后我可以逐步执行代码.
到目前为止,我发现的最接近的解决方案是Alex Kuznetsov和Alex Styler,但是使用这个解决方案我无法进入SQL服务器.
****更新2****
这更像是一个让人回答这个问题的"磕磕绊绊"...我仍然没有从单元测试中踩到SQL服务器的运气.还有其他想法吗?
在Objective-C类的实现块(@implementation ... @end)内部或外部声明的C函数(静态或非静态)之间的区别是什么?
这是特别真实的吗?:
如果需要直接在对象内部进行戳,可以将此函数放在类的@implementation块中,然后可以使用C箭头运算符访问实例变量.但这有点顽皮,所以为了保持你的精华纯度,你应该在对象上使用方法调用.结束讲道.这是邪恶的:
@implementation OblateSphereoid
void drawEggThunk (DrawingContext *context, Rect areaToDraw, void *userData)
{
BWOblateSphereoid *dealie = (BWOblateSphereoid *)userData;
dealie->_frognatz = [NSColor plaidColor];
// and more stuff.
} // drawEggThunk
...
@end // OblateSphereoid
Run Code Online (Sandbox Code Playgroud)
我能以这种方式访问函数中的类的实例变量(在同一个类中声明)吗?
c# ×3
performance ×2
.net ×1
auto-ptr ×1
boxing ×1
c ×1
c++ ×1
clr ×1
cocoa-touch ×1
collision ×1
cts ×1
fonts ×1
ide ×1
jquery ×1
mysql ×1
namespaces ×1
objective-c ×1
php ×1
properties ×1
sql ×1
syntax-error ×1
unit-testing ×1
value-type ×1
wpf ×1