我有一个ArrayList,并希望能够调用索引并使用返回的字符串进行方法调用.
例如
stringList.get(2)();
Run Code Online (Sandbox Code Playgroud)
有什么方法可以解决这个问题吗?
所以我的手上有一点WTF:双精度数学根据它运行的线程返回不同的结果.
码:
double d = 312554083.518955;
Console.WriteLine(d);
d += 0.1d;
Console.WriteLine(d);
d = 2554083.518955;
Console.WriteLine(d);
d += 0.1d;
Console.WriteLine(d);
Run Code Online (Sandbox Code Playgroud)
这打印:
312554083,518955
312554080
2554083,518955
2554083,5
Run Code Online (Sandbox Code Playgroud)
但如果我在闪亮的新线程上执行它,它会返回:
312554083,518955
312554083,618955
2554083,518955
2554083,618955
Run Code Online (Sandbox Code Playgroud)
(你知道,这是正确的结果)
正如你所看到的,有些东西切断了八位数字,无论是小数还是数字.我在返回错误结果的线程上运行了相当多的本机代码(DirectX(SlimDX),Freetype2,FMOD); 也许他们正在配置FPU来做这件事或者其他什么.但是,这段代码是纯C# - 无论它运行在哪个线程上,它编译的MSIL都是相同的.
以前有人见过这样的东西吗?原因是什么?
我有很多这样的用户控件:
PageManageCustomers.xaml.cs:
public partial class PageManageCustomers : BasePage
{
...
}
Run Code Online (Sandbox Code Playgroud)
继承自:
PageBase.cs:
public class BasePage : UserControl, INotifyPropertyChanged
{
...
}
Run Code Online (Sandbox Code Playgroud)
由于PageBase.cs有没有伴随XAML文件,我必须把它指的是在XAML 每个其继承它用户控制的,例如,反复进行以下的块的每个每一个继承控制的XAML文件PageBase:
<DataTemplate x:Key="manageAreaCellTemplate">
<StackPanel Orientation="Horizontal">
<TextBlock Style="{DynamicResource ManageLinkStyle}"
Tag="{Binding Id}" Text="Delete" MouseDown="System_Delete_Click"/>
<TextBlock Text=" "/>
<TextBlock Style="{DynamicResource ManageLinkStyle}"
Tag="{Binding Id}" Text="Edit" MouseDown="System_Edit_Click"/>
</StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
我试图将此块放入资源文件但无法正确获取语法,它说:
'ResourceDictionary'根元素需要ax:Class属性来支持XAML文件中的事件处理程序.删除MouseDown事件的事件处理程序,或将x:Class属性添加到根元素.
或许我可以用XamlReader以某种方式读取这些块?
如何将这个重复的代码块放在一个地方,以便在每个继承BagePage的XAML文件中不重复它?
Window1.xaml:
<Window x:Class="TestXamlPage8283.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel x:Name="MainContent"/>
</Window>
Run Code Online (Sandbox Code Playgroud)
Window1.xaml.cs:
using System.Windows;
namespace …Run Code Online (Sandbox Code Playgroud) 我有一个二维对象数组(主要是,但不是唯一的字符串),我想sSearch用LINQ 过滤一个字符串().以下查询有效,但速度不如我想的那么快.
我已经改变Count了Any,这导致了速度的显着提高,取而代之的Contains是一个忽略大小写的正则表达式,从而消除了对它的调用ToLower.结合这使得执行时间减少了一半多.
现在非常值得注意的是,将搜索项的长度从1增加到2个字母会使执行时间增加三倍,并且还会有另外一个从3到4个字母的跳转(执行时间增加约50%).虽然这显然不足为奇但我想知道是否还有其他方法可以优化字符串的匹配?
Regex rSearch = new Regex(sSearch, RegexOptions.IgnoreCase);
rawData.Where(row => row.Any(column => rSearch.IsMatch(column.ToString())));
Run Code Online (Sandbox Code Playgroud)
在这种情况下,数据集有大约10k行和50列,但大小可能会有相当大的变化.
任何关于如何优化这一点的建议将不胜感激.
这是一个小问题,我这样的Linux程序新手无法解决.
现在我有一个需要编译的main.cpp程序,有一个
#include "Down.h"
Run Code Online (Sandbox Code Playgroud)
在文件的前面.
实际上,此头文件存在于另一个目录中,该../../../include
目录位于
目录中.此外,Down.h所需的一些其他头文件也位于此../../../include目录中.
这是问题,我用命令编译main.cpp
g++ -I /../../../include main.cpp
Run Code Online (Sandbox Code Playgroud)
但是,它提供了大量的错误信息,这意味着这样做是不正确的.
我是否还要将包含声明更改为此声明?
#include "../../../include/DownConvert.h"
Run Code Online (Sandbox Code Playgroud)
请你给我一些建议吗?谢谢.
使用后g++ -I ../../../include main.cpp,我收到以下错误:
$ g++ -I ../../../include main.cpp
In file included from ../../../include/DownConvert.h:98,
from main.cpp:92: ../../../include/ResizeParameters.h:4:22: error:
TypeDefs.h: No such file or directory
In file included from /usr/include/c++/4.4/bits/stl_algo.h:61,
from /usr/include/c++/4.4/algorithm:62,
from ../../../include/H2
Run Code Online (Sandbox Code Playgroud) 我的RoR模型验证有问题:
def save self.accessed = Time.now.to_s self.modified = accessed validate_username super end
def validate_username
if User.find(:first, :select => :id, :conditions => ["userid = '#{self.userid}'"])
self.errors.add(:userid, "already exists")
end
end
正如您所看到的,我已经用自己的方法替换了Model的save方法,在调用父.save方法之前调用validate_username.我的问题是,即使添加了错误,Rails仍会尝试将新行插入数据库,即使用户名是重复的.我在这做错了什么?
PS:我没有使用,validate_uniqueness_of因为以下问题具有区分大小写:https://rails.lighthouseapp.com/projects/8994/tickets/2503-validates_uniqueness_of-is-horribly-inefficient-in-mysql
更新:我尝试了weppos解决方案,它可以工作,但并不像我想的那样.现在,该字段被标记为不正确,但仅当所有其他字段都正确时.我的意思是,如果我输入一个错误的电子邮件地址,例如,电子邮件字段标记为es faulty,userid字段不是.当我提交正确的电子邮件地址时,userid字段被标记为不正确.希望你们明白我的意思:D
Update2:应该以某种方式验证数据,不应该将重复的用户ID插入数据库,不区分大小写.用户id具有"用户域"格式,例如."test-something.net".不幸的是,validates_uniqueness_of :userid它不起作用,它试图将"test-something.net"插入到数据库中,即使已经存在"Test-something.net".validate_username应该是我(快速)解决此问题的方法,但它不起作用.weppos解决方案确实有效,但并不像我想要的那样(正如我在第一次更新中所解释的那样).
还没想出来......有人吗?
最好的问候,x3ro
现在改变这个问题为时已晚,但更准确的是问"为什么克隆()不允许单身人士?".一个copy()方法会更方便.
是否有任何理由不能克隆Java中的枚举?
手册说明了这一点
这保证了枚举永远不会被克隆,这是保持其"单身"状态所必需的.
但是返回实例本身也会保留其状态,并且我能够以与其他可克隆对象相同的方式处理关联的枚举.
有人可能会说
[clone]的一般意图是,对于任何对象x,表达式:
x.clone() != x将为true,[...]
但对于单身人士而言,我希望x.clone() == x是真实的.如果返回实例本身,则单例模式对引用对象是透明的.
那么为什么不允许克隆枚举,或者他们忘记考虑单身人士和不可变因素,何时clone()被指定?
c# ×3
java ×2
activerecord ×1
arraylist ×1
clone ×1
compilation ×1
delphi ×1
enums ×1
g++ ×1
javascript ×1
linq ×1
optimization ×1
php ×1
python ×1
search ×1
string ×1
types ×1
validation ×1
wpf ×1
xaml ×1