我目前正在使用大量渲染在C#中进行一个项目,并且在几乎所有类中都有一个用于缩放渲染的类型整数的常量值.我知道我可以在一个地方将这个常量定义为一个普通变量然后传递它,但这看起来真的很麻烦.何时可以在C#中使用静态变量?对我的问题最简单的解决方案是创建一个包含所有其他类可以引用的静态变量的类 - 这是不好的设计?
今天我遇到了关于十进制扩展的这篇文章,我立刻受到启发,重新设计了我在Project Euler Problem 26上的解决方案,将这个新的数学知识包含在一个更有效的解决方案中(没有强制执行).简而言之,问题是找到d范围为1-1000的值,其将使表达式"1/d"中的重复循环的长度最大化.
如果不对问题做出任何进一步的假设,可以进一步提高解决问题的有效性,我决定坚持下去
10^s=10^(s+t) (mod n)
Run Code Online (Sandbox Code Playgroud)
这允许我在D的任何值中找到最长的重复周期(t)和周期的起始点.
问题在于等式的指数部分,因为这将在通过使用模数减小之前产生极大的值.没有整数值可以处理这个大值,并且浮点数据类型看起来计算错误.
我目前正在使用此代码:
Private Function solveDiscreteLogarithm(ByVal D As Integer) As Integer
Dim NumberToIndex As New Dictionary(Of Long, Long)()
Dim maxCheck As Integer = 1000
For index As Integer = 1 To maxCheck
If (Not NumberToIndex.ContainsKey((10 ^ index) Mod D)) Then
NumberToIndex.Add((10 ^ index) Mod D, index)
Else
Return index - NumberToIndex((10 ^ index) Mod D)
End If
Next
Return -1
End Function
Run Code Online (Sandbox Code Playgroud)
在某些时候将计算"(10 ^ 47)mod 983"导致783,这不是正确的结果.正确的结果应该是732.我假设它是因为我使用的是整数数据类型并且它导致溢出.我尝试使用double代替,但这给了更奇怪的结果.
那么我的选择是什么?
基本上我们处在一个主要的hacky情况.我们有一些链接到其他网站的网页.但是,要求是此站点与链接到我们的站点具有相同的布局.这最初是通过请求原始页面,抓取布局以及在其布局中包装内容来完成的.
这在Web窗体中相当简单,因为我们可以简单地创建一个子类化的页面,它会覆盖Render方法,然后将我们在外部站点布局中生成的任何内容包装起来.但是,现在这个项目正在ASP.NET MVC中重写.
我们如何才能了解MVC操作创建的HTML结果,根据需要修改它们并将修改后的结果输出到浏览器?
我有一个基类型,从中继承了3个不同的对象.让我们调用基础对象B,继承X,Y和Z.现在我的字典有一个int作为键,分别是X,Y,Z作为值.
我一直认为需要做的查找在一个只有特定的一个词典画本身,而是能够与所有三个我的词典我想指定的控制应该等于一个参数的工作控制Dictionary<int, B>.但这没用.
那么我的选择是什么?我希望我的控件可以与表单的所有字典一起使用<int, B>.
我目前正在尝试将可执行控制台应用程序的输出转换为另一个.确切地说,我正在尝试做一些概述:
我有一个我无法编辑的可执行文件,也没有看到它的代码.它在执行时将一些(相当多的是诚实的)行写入控制台.
现在我想编写另一个可执行文件来启动上面的那个并读取它写的东西.
对我来说似乎很简单,所以我开始编码,但结果却出现了一条错误消息 StandardOut has not been redirected or the process hasn't started yet.
我尝试使用这种结构(C#):
Process MyApp = Process.Start(@"C:\some\dirs\foo.exe", "someargs");
MyApp.Start();
StreamReader _Out = MyApp.StandardOutput;
string _Line = "";
while ((_Line = _Out.ReadLine()) != null)
Console.WriteLine("Read: " + _Line);
MyApp.Close();
Run Code Online (Sandbox Code Playgroud)
我可以打开可执行文件,它也可以打开内部的可执行文件,但是一旦读取返回的值,应用程序就会崩溃.
我究竟做错了什么?!
我们需要在我们的应用程序中代表大量数字.我们使用整数数组来做这个.最终的生产应该是性能最大化.我们考虑将数组封装在一个类中,这样我们就可以添加与数组相关的属性,如isNegative,numberBase等.
但是,我们担心使用课程会使我们的表现明智.我们做了一个测试,我们创建了一个固定数量的数组,并通过纯数组使用设置它的值,并创建一个类,并通过类访问数组:
for (int i = 0; i < 10000; i++)
{
if (createClass)
{
BigNumber b = new BigNumber(new int[5000], 10);
for (int j = 0; j < b.Number.Length; j++)
{
b[j] = 5;
}
}
else
{
int[] test = new int[5000];
for (int j = 0; j < test.Length; j++)
{
test[j] = 5;
}
}
}
Run Code Online (Sandbox Code Playgroud)
并且似乎使用类几乎将上述代码的运行时间减慢了6倍.我们通过将数组封装在结构中来尝试上述操作,这导致运行时间几乎等于纯数组使用.
与结构相比,使用类时导致这种巨大开销的原因是什么?当你使用堆栈而不是堆时,它真的只是你获得的性能提升吗?
编辑: BigNumber只将数组存储在属性公开的私有变量中.简化:
public class BigNumber{
private int[] number;
public BigNumber(int[] number) { this.number = …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×1
arrays ×1
asp.net-mvc ×1
code-design ×1
executable ×1
generics ×1
math ×1
performance ×1
redirect ×1
vb.net ×1