SELECT contact_id, last_name FROM contacts
WHERE last_name like 'B%' ORDER BY last_name limit 0, 250
Run Code Online (Sandbox Code Playgroud)
只返回B的.
我需要的是从第一个B开始返回250行.如果少于250个B,那么我需要获得以下C,D等.
最近,我的同事向我展示了一段无法正常工作的代码:
public class SomeClass
{
private IList<Category> _categories;
public void SetCategories()
{
_categories = GetCategories() ?? new List<Category>();
DoSomethingElse();
}
public IList<Category> GetCategories()
{
return RetrieveCategories().Select(Something).ToList();
}
}
Run Code Online (Sandbox Code Playgroud)
(我知道运算符是多余的,因为linq ToList将始终返回一个列表,但这就是代码的设置方式).
问题是_categories为null.在调试器中,设置断点_categories = GetCategories() ?? new List<Category>()
,然后单步执行DoSomethingElse(),_ categories仍然为null.
直接将_categories设置为GetCategories()工作正常.拆分?在一个完整的if语句工作正常.空合并运算符没有.
它是一个ASP.NET应用程序,所以一个不同的线程可能会干扰,但它在他的机器上,只有他在浏览器中连接._cateogories不是静态的,或任何东西.
我想知道的是,这怎么可能发生?
编辑:
只是为了增加奇异性,除了初始化类_categories
之外,永远不会设置除该功能之外的任何地方.
确切的代码是这样的:
public class CategoryListControl
{
private ICategoryRepository _repo;
private IList<Category> _categories;
public override string Render(/* args */)
{
_repo = ServiceLocator.Get<ICategoryRepository>();
Category category = _repo.FindByUrl(url);
_categories = _repo.GetChildren(category) …
Run Code Online (Sandbox Code Playgroud) 假设我有一个抽象基类,它只定义了一个可以在其上执行添加的容器:
class Base {
public:
virtual ~Base() {}
virtual Base operator+(const Base& rhs) =0;
};
Run Code Online (Sandbox Code Playgroud)
然后我想要Base的子类来提供实际的操作:
class Derived: public Base {
public:
Base operator+(const Base& rhs) { // won't compile
// actual implementation
}
};
Run Code Online (Sandbox Code Playgroud)
这是我的问题:operator +()应该返回一个新的Base对象,但Base是抽象的,它不会编译.
我试图通过使用工厂返回对Base对象的引用来解决这个问题,但是在运算符的主体中我发现自己正在进行转换,因为加法仅对Derived对象有意义.
在任何情况下,感觉我咬自己的尾巴,有一个适当的解决方案吗?
更新:基于到目前为止的答案,似乎我使用了错误的模式.我想将接口与实现分开,因此库代码只需要知道接口和客户端代码提供的实现.我尝试通过将接口作为抽象基类提供,并将实现作为子类来实现.
更新2:我的问题实际上是2个问题,一个具体问题(关于在抽象类中重载运算符)和另一个关于我的意图(如何允许客户端自定义实现).前者已被回答:不要.对于后者,似乎我使用的接口类模式实际上是解决该问题的好方法(根据Griffiths和Radford),这只是我不应该混淆重载运算符.
我想要完成的是使用 onClick 命令设置动态创建的链接按钮,以便在单击时它将运行后面代码中的方法。这是我的代码:
protected void Page_Init(object sender, EventArgs e)
{
LoadLeftSide();
}
private void LoadLeftSide()
{
string filepath = Server.MapPath("DataSource.xml");
List<Post> list = PostHelper.GetAllPosts(filepath);
HtmlTable table = FindControl("tbl") as HtmlTable;
HtmlTableRow hearderrow = new HtmlTableRow();
HtmlTableCell heardercell = new HtmlTableCell();
heardercell.InnerText = "Posts:";
hearderrow.Cells.Add(heardercell);
table.Rows.Add(hearderrow);
foreach (Post p in list)
{
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell cell1 = new HtmlTableCell();
LinkButton lnkPost = new LinkButton();
lnkPost.ID =string.Format("{0}" ,Guid.NewGuid());
lnkPost.Attributes.Add("runat", "server");
lnkPost.Text = p.Title;
// lnkPost.CommandName = p.Id.ToString();
// lnkPost.CommandArgument …
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的WCF应用程序中实现一个每请求会话模型,并且我已经阅读了关于这个主题的无数文档,但看起来还没有完整的演示.我实际上遇到过一些非常有用的文章,例如:
但是这些都来自NHibernate和Ninject没有WCF特定实现的旧时代,因此他们通过实现他们的自定义服务提供程序等来实现我所需要的.因为Ninject和NHibernate现在都支持WCF,所以我希望保持一致通过使用他们的模块,但我最终在这里......
基本设置和流程应该是这样的:
我最初的问题是我无法访问wcf生命周期来处理我的绑定.在深入挖掘ninject代码之后,我设法将我的方法挂钩到ServiceHost的Opening/Closing事件而没有太大变化,但后来我无法访问OperationContext,因为它是线程静态的.
后来我尝试启用asp.net兼容性并使用Application_BeginRequest和Application_EndRequest,它看起来非常有前景,但我不认为这是最好的解决方案,因为我应该将东西绑定到服务实例,而不是http请求.
有没有人使用ninject的内置wcf扩展库实现这一目标?或者我可能做错什么的任何想法?
在这种情况下,习惯上只打开一次文件吗?
#!/usr/bin/env perl
use warnings;
use 5.012;
use autodie;
my $file = 'my_file';
open my $fh, '>>', $file;
say $fh "Begin";
close $fh;
$SIG{INT} = sub {
open my $fh, '>>', $file;
say $fh "End";
close $fh;
exit
};
my $result;
while ( 1 ) {
$result++;
# ...
# ...
# ...
open my $fh, '>>', $file;
say $fh $result;
close $fh;
sleep 3;
}
Run Code Online (Sandbox Code Playgroud) .NET(VB.NET或C#)是否有一种方法,当发生异常时,转储每个线程的堆栈跟踪?基本上我想重现Visual Studio的Debug-> Threads窗口中发生的事情,看看发生异常时每个线程正在做什么
我为我的城市写了一个本地名称/电话/地址搜索引擎.
用户必须能够通过访问以下任一URL快速访问结果:
这是我目前的.htaccess配置:
# Smart links
RewriteRule ^([0-9]+)$ /html/index.php?phone=$1 [QSA,L]
RewriteRule ^([A-Za-z-]+)$ /html/index.php?lastname=$1 [QSA,L]
RewriteRule ^([A-Za-z-]+)/([A-Za-z-]+)$ /html/index.php?lastname=$1&name=$2 [QSA,L]
Run Code Online (Sandbox Code Playgroud)
这非常有效,除非用户在姓氏和/或名字中包含空格.此外,搜索名称时不能使用任何数字.
关于如何在网址中留出空格的任何想法?谢谢!
c# ×3
.net ×2
algorithm ×2
.htaccess ×1
asp.net ×1
c++ ×1
file ×1
greedy ×1
heuristics ×1
javascript ×1
mysql ×1
nhibernate ×1
ninject ×1
perl ×1
polymorphism ×1
vb.net ×1
wcf ×1