我很好奇.NET将如何影响Python和Ruby应用程序.
用IronPython/IronRuby编写的应用程序是否会特定于.NET环境,它们将基本上成为特定于平台的?
如果他们不使用任何.NET功能,那么IronPython/IronRuby相对于非.NET版本的优势是什么?
.net中堆分配对象的大小是多少,包括管理开销?我假设对象是沿着4字节边界分配的,还是使用了不同的方法?
所以我只是从微软测试CLR Profiler,我做了一个小程序,创建了一个包含1,000,000个双打的List.我检查了堆,结果列表<>大小大约是124KB(我不记得确切,但它就在那附近).这真的震撼了我的世界,如果它有100万双打怎么可能是124KB呢?无论如何,之后我决定检查双[1000000].令我惊讶的是(因为这是我所期望的List <> = P),因此数组大小为7.6MB.巨大的差异!!
他们怎么会不一样?List <>如何管理其项目(令人难以置信)内存效率?我的意思是,它不像其他7.5 mb在其他地方,因为在我创建了100万双打之后,应用程序的大小大约增加了3或4 KB.
我试图按照这篇文章(http://blog.zoolutions.se/post/2010/04/01/Conquering-NServiceBus-part-4-e28093-Testing.aspx)为我的nservicebus saga项目创建单元测试
请参阅以下代码,不确定为什么它总是抱怨任何人都知道如何解决它?
(我使用的是nservice总线2.0)
public class ReportSaga : Saga<ReportSagaData>,
IAmStartedByMessages<RequestReportMessage>,
IHandleMessages<PollingReportStatusMessage>
{
// implementation
}
[TestFixture]
public class ReportSaga_HandleRequestReportMessageTests
{
[TestFixtureSetUp]
public void SetUp()
{
var assemblies = new[]
{
typeof (ReportSaga).Assembly,
typeof (RequestReportMessage).Assembly,
typeof (PollingReportStatusMessage).Assembly,
Assembly.Load("NServiceBus"),
Assembly.Load("NServiceBus.Core")
};
Test.Initialize(assemblies);
}
[Test]
public void HandleRequestReportMessageTests()
{
Test.Handler<ReportSaga>()
.OnMessage<RequestReportMessage>(x =>
{
x.Id = 1234;
x.ReportDate = DateTime.Now;
});
}
}
Test 'UnitTests.ReportSaga_HandleRequestReportMessageTests.HandleRequestReportMessageTests' failed: System.ArgumentException : GenericArguments[0], 'ReportSagaData', on 'NServiceBus.IMessageHandler`1[T]' violates the constraint of type 'T'.
----> System.TypeLoadException : GenericArguments[0], 'ReportSagaData', on …Run Code Online (Sandbox Code Playgroud) 我正在学习C#(C++背景),我已经遇到了这段代码:
public interface IUndoable { void Undo(); }
public class TextBox : IUndoable
{
void IUndoable.Undo() { Console.WriteLine ("TextBox.Undo"); }
}
public class RichTextBox : TextBox, IUndoable
{
public new void Undo() { Console.WriteLine ("RichTextBox.Undo"); }
}
Run Code Online (Sandbox Code Playgroud)
由于RichTextBox派生自TextBox,任何人都可以解释为什么RichTextBox也来自IUndoable吗?我原以为IUndoable接口将与RichTextBox可以访问的任何其他TextBox成员"一起继承"?
顺便说一句,我猜测到目前为止我所读到的内容,C#中不存在公共,受保护和私有继承的概念.
这是正确的推论吗?如果是这样,那么在C#中如何实现这种行为(即限制继承)?
[编辑]
澄清:我正在阅读的书中的部分是关于隐式和显式接口实现的细微差别和潜在问题 - 所以我明白了.此外,代码片段(从本书中复制)是故意冗长的,以便解释由于调用在基类中隐式实现的重新实现的成员方法而导致的不同语义(phew!).
我的主要问题可简单归纳为:
可以这样:
public class RichTextBox : TextBox, IUndoable
{
public new void Undo() { Console.WriteLine ("RichTextBox.Undo"); }
}
Run Code Online (Sandbox Code Playgroud)
写作:
public class RichTextBox : TextBox
{
public new void Undo() { Console.WriteLine ("RichTextBox.Undo"); }
}
Run Code Online (Sandbox Code Playgroud)
如果是的话,为什么作者是冗长的(他必须有一个我确定的理由).如果不是,为什么接口不是从TextBox继承的?
我想通过以这种方式创建 XMLDocument 来打开一个 HTML 文档(作为从 StreamReader 中检索的字符串):
XmlDocument doc = new XmlDocument
doc.Load(string containing the retrieved document).
Run Code Online (Sandbox Code Playgroud)
但由于 HTML 文档包含这个头:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
Run Code Online (Sandbox Code Playgroud)
它告诉我该文档无效...有什么办法可以解决这个问题?
我想分析一下图片的颜色.是否可以将OpenCV库与F#(我熟悉的唯一语言)一起使用.如果是的话,你知道我在哪里可以找到关于这个主题的教程/书籍(OpenCV 2 Computer Vision看起来很棒但是是为C++用户编写的).
背景
我希望能够在图片框中获得缩放图像的绘制尺寸(我将在下面解释).
该PictureBox.ImageRectangle属性似乎正是我正在寻找的,因为它显示了已调整大小的图像的高度和宽度,以及它在控件内的相对顶部,左侧位置.
问题是PictureBox.ImageRectangle私有的,所以我不能在不使用反射的情况下读取值(这显然不是理想的).
实际问题
我的问题是,有没有另一种方法,我可以很容易地得到这些值,而无需编写一个方法来计算"应该"的值是什么?我可以轻松地做到这一点,但我觉得我会重新发明轮子.
语境:
我正在用C#编写一个简单的图像处理应用程序,其中一件事就是允许用户在图像的一部分周围绘制一个选区(很像Photoshop中的Marquee工具).
我需要知道渲染图像的尺寸,以便知道在哪里设置选框工具的边界,并将绘制的矩形的值转换为控件内缩放位图上的点.
好的,这就是我想做的.
Class Container<T>
{
T contained;
public void ContainObject(T obj)
{
contained = obj;
if(/*Magical Code That Detects If T Implemtns IContainableObject*/)
{
IContainableObect c = (IContainableObject)obj;
c.NotifyContained(self);
}
}
}
interface IContainableObject
{
public void NotifyContained(Container<REPLACE_THIS>);//This line is important, see below after reading code.
}
Class ImplementingType : IContaiableObject
{
public Container<ImplementingType> MyContainer;
public void NotifyContained(Container<ImplmentingType> c)
{
MyContainer = c;
}
}
Class Main
{
public static void Main(args)
{
ImplementingType iObj = new ImplementingType();
Container<ImplementingType> container = …Run Code Online (Sandbox Code Playgroud) 在Console.ReadLine()使用mono filename.exe编译后运行代码时,忽略C#命令gmcs filename.cs.可能会发生什么?即使我尝试运行简单的代码,它也会直接跳到最后,好像它什么都没有运行一样.
static void Main(string[] args) {
string value = Console.ReadLine();
Console.WriteLine("You entered: {0}", value);
Console.WriteLine("Press ENTER to continue...");
Console.ReadLine(); // Returns immediately.
Console.WriteLine("Continuing....");
}
Run Code Online (Sandbox Code Playgroud) c# ×8
.net ×4
interface ×2
arrays ×1
containers ×1
document ×1
f# ×1
generic-list ×1
generics ×1
graphics ×1
html ×1
inheritance ×1
ironpython ×1
ironruby ×1
memory ×1
nservicebus ×1
opencv ×1
picturebox ×1
python ×1
readline ×1
ruby ×1
unit-testing ×1
windows ×1
xml ×1