您好,我编写了这个OneAtRandom()扩展方法:
public static class GenericIListExtensions
{
public static T OneAtRandom<T>(this IList<T> list)
{
list.ThrowIfNull("list");
if (list.Count == 0)
throw new ArgumentException("OneAtRandom() cannot be called on 'list' with 0 elements");
int randomIdx = new Random().Next(list.Count);
return list[randomIdx];
}
}
Run Code Online (Sandbox Code Playgroud)
使用此单元测试进行测试失败:
[Test]
public void ShouldNotAlwaysReturnTheSameValueIfOneAtRandomCalledOnListOfLengthTwo()
{
int SomeStatisticallyUnlikelyNumberOf = 100;
IList<string> list = new List<string>() { FirstString, SecondString };
bool firstStringFound = false;
bool secondStringFound = false;
SomeStatisticallyUnlikelyNumberOf.Times(() =>
{
string theString = list.OneAtRandom();
if (theString == FirstString) firstStringFound = true;
if …Run Code Online (Sandbox Code Playgroud) 我注意到有一个类似于我的问题,只有c#:link text.让我解释一下:我对整个Web服务实现都很陌生,所以我遇到了一些难以理解的问题(特别是由于模糊的MediaWiki API手册).
我希望将整个页面作为 PHP(XML文件)中的字符串检索,然后在PHP中处理它(我很确定还有其他更复杂的方法来解析XML文件,但无论如何): 主页维基百科.
我试过了$fp = fopen($url,'r');.它输出:HTTP request failed! HTTP/1.0 400 Bad Request.API不需要密钥即可连接到它.
您能详细描述如何连接到API并将页面作为字符串获取吗?
编辑:
网址是$url='http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&redirects&titles=Main Page';.我只想将文件的整个内容读入一个字符串中以便使用它.
假设一个线程A正在运行.我有另一个线索B,谁不是.B已经启动,处于可运行状态.
如果我打电话B.join()会怎么样?
是暂停执行A还是等待A的run()方法完成?
我有一个对象options:options = {title : 'title1', name : 'name1', url : 'url1', etc.}
它作为参数传递给函数.我正在尝试迭代该对象,将其传递给另一个函数evaluate,并将结果存储在另一个对象中opts,如下所示:
var opts = new Object();
$.each(options, function(key,value){
opts.key = evaluate(element, value);
});
Run Code Online (Sandbox Code Playgroud)
该evaluate(element,value)精品工程,但问题是,opts最终看起来像:
{key : eval(element,url1)}
Run Code Online (Sandbox Code Playgroud)
代替
{title : eval(element,title1), name : eval(element,name1), etc.}
Run Code Online (Sandbox Code Playgroud)
也就是说,key从字面上传递而不是被评估,并且使用最后一个属性覆盖每次迭代options.
我的作业行中是否有正确的语法?我也尝试过:
opts = {key : eval(element,val)}
Run Code Online (Sandbox Code Playgroud)
这给出了与上述相同的结果.我也可以将对象转换为$.each迭代中的数组.我尝试了几种方法,但也没有成功.如果有人能告诉我这条路线,那也很棒.
(这是一个jQuery插件,我在Firefox中使用Firebug进行测试).
在此先感谢您的帮助.
我需要byte[]用一个非零值填充一个.如何在C#中执行此操作而不循环遍历byte数组中的每个?
更新:评论似乎将此分为两个问题 -
memset我完全同意,正如埃里克和其他人所指出的,使用一个简单的循环就可以了.问题的关键是看我是否可以学习一些关于C#的新东西:)我认为Juliet的并行操作方法应该比简单的循环更快.
基准: 感谢Mikael Svenson:http://techmikael.blogspot.com/2009/12/filling-array-with-default-value.html
事实证明,for除非你想使用不安全的代码,否则简单的循环是可行的.
抱歉我的原帖不清楚.埃里克和马克的评论都是正确的; 需要有更多专注的问题.感谢大家的建议和回应.
我使用共享托管服务来托管我的网站,因此我无法直接访问PHP配置或安装任何扩展.所以我的问题是utf-8字符串无法由标准PHP字符串函数处理,因为我没有在服务器上安装mbstring扩展.我正在寻找另一种处理unicode字符串的方法,非常感谢任何帮助或指导,或者如果您知道任何在线资源,请与我分享.
我只有一个"Default.aspx"页面和一个ListView控件.为什么我收到此错误.从来没有发生过
"必须在ListView"ListView1上指定项目占位符.通过将控件的ID属性设置为"itemPlaceholder"来指定项目占位符.项目占位符控件还必须指定runat ="server"."
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="TesterConcepts._Default"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
onselecting="ObjectDataSource1_Selecting" SelectMethod="GetItemsCollection"
TypeName="TesterConcepts.CutomDataSource">
<SelectParameters>
<asp:Parameter Name="items" Type="Object" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1"
onselectedindexchanged="ListView1_SelectedIndexChanged">
</asp:ListView>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这样做甚至没有帮助
<asp:ListView ID="ListView1" runat="server" DataSourceID="ObjectDataSource1"
OnSelectedIndexChanged="ListView1_SelectedIndexChanged"
ItemPlaceholderID="PlaceHolder1">
</asp:ListView>
<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>
Run Code Online (Sandbox Code Playgroud)
现在它抛出了这个异常
"必须在ListView'ListView1'上指定项占位符.通过将控件的ID属性设置为"PlaceHolder1"来指定项占位符.项占位符控件还必须指定runat ="server""
我有这个扩展标记
public class NullableExtension : TypeExtension
{
public NullableExtension() {
}
public NullableExtension( string type )
: base(type) {
}
public NullableExtension( Type type )
: base(type) {
}
public override object ProvideValue( IServiceProvider serviceProvider ) {
Type basis = (Type)base.ProvideValue( serviceProvider );
return typeof(Nullable<>).MakeGenericType( basis );
}
}
Run Code Online (Sandbox Code Playgroud)
它旨在提供其他类型的可空版本.当在"普通"XAML中使用时,它按预期工作.例如,如
<SomeControl DataContext="{My:Nullable System:Int32}"/>
Run Code Online (Sandbox Code Playgroud)
(假设My是为保存扩展的C#名称空间定义的XML名称空间,对于System来说类似).控件的数据上下文设置为System.Typefor,Nullable<int>如我所料.
但是,当我使用此扩展来尝试设置类似的DataType属性时DataTemplate
<DataTemplate DataType="{My:Nullable System:Int32}">
<TextBlock ... />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
编译器告诉我的是
字典的键不能是'System.Windows.Controls.Primitives.TextBlock'类型.只支持String,TypeExtension和StaticExtension."
和
"类型'NullableExtension'的构造函数没有1个参数.
有人知道为什么只允许这三种方法(甚至不是TypeExtension像我的子类一样)?那时处理XAML有什么特别之处?是否有另一种方法来实现这一点(基于可以为空的类型的数据模板选择)而不诉诸DataTemplateSelector?
假设我在文件A中有函数X,我想将该函数移动到文件B.同时,其他人对文件A中的函数X进行了更改.
合并这两个变化时git是否做了什么特别的事情?它是否会识别相同的功能被移动到文件B并在那里应用更改?或者我们最终会丢失更改或在文件A和B中有两个相同功能的副本?
我发现的关于在git中移动代码的大多数文章主要是指重命名整个文件而不是文件内的代码块.我发现的最接近的是来自内核陷阱的Linus:
当使用git时,整个'保持代码移动与更改分开'有一个更基本的原因:git可以跟踪代码移动(再次,无论是移动整个文件还是只移动文件之间的函数),并做一个'git blame - C'实际上将遵循文件之间的代码移动.它通过相似性分析来做到这一点,但它确实意味着如果你同时移动代码并改变它,git就看不到'哦,那个函数最初来自那个其他文件',现在你得到更糟糕的注释代码实际来自哪里.
所以看起来git会认识到代码被移动到其他地方,但并没有真正说明合并期间会发生什么.