我想申请这个:
private string _name;
public string name
{
get { return _name; }
set { _name = Fix(value); }
}
Run Code Online (Sandbox Code Playgroud)
所有字符串成员的字符串,并不想为所有类成员重复相同的代码.
一个显而易见的解决方案是将该代码放在一个类来处理问题并将所有字符串成员声明为:myString而不是string,但这意味着我必须像这样访问主类成员:email.fixed而不仅仅是email.
所以我想知道,是否有某种模板我可以定义然后轻松应用?
我有一个方法需要根据搜索返回不同的数据类型.我正在考虑两种方法,因为我是C#的新手,我不知道哪种方法最好,所以请帮我弄清楚.
第一种方法是重载这样的方法:
public int Get(string name){
//...
return intValue;
}
public double Get(string name){
//...
return doubleValue;
}
public string Get(string name){
//...
return stringValue;
}
Run Code Online (Sandbox Code Playgroud)
第二种方法是为每种数据类型设置不同的方法,如下所示:
public int GetInt(string name){
//...
return intValue;
}
public double GetDouble(string name){
//...
return doubleValue;
}
public string GetString(string name){
//...
return stringValue;
}
Run Code Online (Sandbox Code Playgroud)
哪一个是C#最安全的,考虑到这个代码将从DLL发布?
我正在开发一个多协议套接字服务器,在我第一次尝试时,我把它作为事件驱动,因为这是我所知道的最好方法,但是通过使用这种方法,我无法找到将应用程序特定数据链接到套接字的有效方法所以在每个事件中我都必须执行搜索才能将套接字链接到其上下文.经过一些研究后,我发现IO完成端口是一个更好的工作方式,所以经过大量阅读后,我终于能够重新编写代码,以便在IOCP方法下工作.
但经过一些进一步的研究后,我发现这篇文章(请阅读:"接受连接")建议通过在另一个线程上处理FD_ACCEPT事件来将接受操作与I/O进程分离,他还建议将此作为预防的手段恶意攻击...解释确实有意义,但作者没有考虑到在这种方法下没有办法(至少AFAIK)将套接字与其上下文数据相关联,因此在侦听的服务器上应用此建议绑定到多个地址的几个端口和每个处理不同协议的端口,必然涉及每个FD_ACCEPT事件的搜索操作,这可能(或可能不)打败解除接受的原始提议......这是我迁移到的原因首先完成港口.
所以..我想知道是否有2个完成端口,一个用于接受操作,一个用于I/O过程可以被认为是一般的热门,但特别是关于性能......或者最好只有一个?
更新:
经过一些实验,我发现,通过使用2个IOCP(在分离的线程上)将接受过程与I/O过程分离是根本不可行的,并且由于这个事实,不能获得效率提升.因此,即使他没有明确提及它,作者也是正确的,解耦这两个过程的唯一可行方法是通过处理FD_ACCEPT事件所有暗示,但如果他在他的陈述中也是正确的,那么唯一在我的情况下使其可行的方法是找到一种有效的方法将每个套接字链接到其上下文数据,或者换句话说; 无需搜索,所以原始问题仍然存在.