假设我有:
public class Bob
{
public int Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想将Value成员作为out参数传递
Int32.TryParse("123", out bob.Value);
Run Code Online (Sandbox Code Playgroud)
但我得到一个编译错误,"'out'参数不归类为变量." 有没有办法实现这一点,或者我将不得不提取变量,àla:
int value;
Int32.TryParse("123", out value);
bob.Value = value;
Run Code Online (Sandbox Code Playgroud) 在数学和计算机科学中,元组是元素的有序列表.在集合论中,(有序的)n元组是n个元素的序列(或有序列表),其中n是正整数.
因此,例如,在Python中,元组的第二项将通过访问t[1].
在Scala中,只能通过奇怪的名称进行访问t._2.
所以问题是,为什么我不能按照定义访问元组中的数据作为序列或列表?有什么想法或者还没有检查过吗?
.NET 4是否附带任何序列化/反序列化JSON数据的类?
我们最近将所有项目从.NET 3.5升级到.NET 4.我遇到了一个相当奇怪的问题string.IndexOf().
我的代码显然略有不同,但在调查问题的过程中,我发现调用IndexOf()一个字符串本身返回1而不是0.换句话说:
string text = "\xAD\x2D"; // problem happens with "-dely N.China", too;
int index = text.IndexOf(text); // see update note below.
Run Code Online (Sandbox Code Playgroud)
给我一个索引1而不是0.关于这个问题需要注意几点:
问题似乎与这些连字符有关(第一个字符是Unicode软连字符,第二个字符是常规连字符).
我已经仔细检查过,这不会发生在.NET 3.5中,而是发生在.NET 4中.
更改IndexOf()要进行序数比较可以解决问题,因此出于某种原因,默认情况下会忽略第一个字符IndexOf.
有谁知道为什么会这样?
编辑
对不起,伙计们,在原帖上做了一些东西,并在那里得到了隐藏的短跑两次.我已经更新了字符串,只要将其粘贴到正确的编辑器中,就应该返回1而不是2的索引.
更新:
将原始问题字符串更改为每个实际字符清晰可见的字符串(使用转义).这有点简化了问题.
我得到这个例外:
通信对象System.ServiceModel.Channels.ServiceChannel不能用于通信,因为它处于Faulted状态.
WCF服务使用默认的wsHttpBinding.无论我在哪里使用它,我都会以下列方式使用WCF:
using (var proxy = new CAGDashboardServiceClient())
{
proxy.Open();
var result = proxy.GetSiteForRegion(ddlRegions.SelectedValue);
ddlSites.DataSource = result;
ddlSites.DataBind();
proxy.Close();
}
Run Code Online (Sandbox Code Playgroud)
消息中显示的错误行似乎是在last proxy.close之后.不确定发生了什么.我正在视觉工作室08内推出这项服务.
这是跟踪信息:
The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be used for communication because it is in the Faulted state.
Server stack trace:
at System.ServiceModel.Channels.CommunicationObject.Close(TimeSpan timeout)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout)
at System.ServiceModel.ClientBase`1.System.ServiceModel.ICommunicationObject.Close(TimeSpan timeout)
at System.ServiceModel.ClientBase`1.Close()
at System.ServiceModel.ClientBase`1.System.IDisposable.Dispose()
at CAGDashboard.UserControls.ucVolunteerCRUDGrid.ddlRegions_SelectedIndexChanged(Object sender, EventArgs e) in C:\Documents and Settings\rballalx\My Documents\Visual …Run Code Online (Sandbox Code Playgroud) function parts($part) {
$structure = 'http://' . $site_url . 'content/';
echo($tructure . $part . '.php');
}
Run Code Online (Sandbox Code Playgroud)
此函数使用$site_url在此页面顶部定义的变量,但此变量未传递到函数中.
我们如何让它在函数中返回?
考虑要求找到一对匹配的字符集,并删除它们之间的任何字符,以及那些字符/分隔符.
以下是分隔符集:
[] square brackets
() parentheses
"" double quotes
'' single quotes
Run Code Online (Sandbox Code Playgroud)
以下是一些应匹配的字符串示例:
Given: Results In:
-------------------------------------------
Hello "some" World Hello World
Give [Me Some] Purple Give Purple
Have Fifteen (Lunch Today) Have Fifteen
Have 'a good'day Have day
Run Code Online (Sandbox Code Playgroud)
以及一些不匹配的字符串示例:
Does Not Match:
------------------
Hello "world
Brown]co[w
Cheese'factory
Run Code Online (Sandbox Code Playgroud)
如果给定的字符串不包含匹配的分隔符集,则不会对其进行修改.输入字符串可以具有许多匹配的分隔符对.如果一组2个分隔符重叠(即he[llo "worl]d"),那就是我们可以忽略的边缘情况.
该算法看起来像这样:
string myInput = "Give [Me Some] Purple (And More) Elephants";
string pattern; //some pattern
string output = Regex.Replace(myInput, pattern, string.Empty);
Run Code Online (Sandbox Code Playgroud)
问题:如何使用C#实现这一目标?我倾向于正则表达式.
额外:是否有简单的方法可以在常量或某种列表中匹配这些起始和结束分隔符?我正在寻找的解决方案很容易更改分隔符,以防业务分析师提出新的分隔符集.
有人能告诉我如何在C#中获取Windows控制台应用程序的句柄吗?在Windows窗体应用程序中,我通常会尝试this.Handle.
微软在.NET Framework 4中引入了BCL IObservable<T>接口,我想,"太好了,最后,我必须使用它!" 所以我深入挖掘并阅读帖子和文档,甚至实现了模式.
在这样做之后,我意识到基本实现实际上将所有T事件发送给所有订阅者,而不对其进行任何过滤; 即普通广播.我在某处读到了Observable模式用于普通广播.我觉得这不是真的,我错过了一些东西.
我的问题:
如果我添加一个过滤机制,使用Observable模式和只使用普通CLR事件有什么区别?
应该何时使用此模式,何时应该选择使用普通CLR事件?
Observable模式的主要优点是什么?