我的同事是C#的新手,并不知道合并操作员.所以,我看到他写了一行代码:
string foo = "" + str;
Run Code Online (Sandbox Code Playgroud)
想法是,如果str为null,则此表达式将返回空字符串.当然,这可以改写为:
string foo = str ?? "";
Run Code Online (Sandbox Code Playgroud)
我觉得这会更具可读性.但这真的很重要吗?可读性的好处是否足以建议返回并使这些线看起来像第二个?或者这是我应该学会放手的事情之一(假设我的同事接受了未来最佳方式的教育)?
编辑:只是一个注释,我很欣赏效率评论,但这并没有真正用于任何性能至关重要的情况.因此,虽然这些信息很有趣,但并不一定是我认为重要的信息.
我有六个字符串变量,如str11,str12,str13,str21,str21和str23.
我需要比较这些变量的组合.
我必须检查的组合是str11 - str12 - str13作为一组,str21 - str22 - str23作为其他组.我必须比较这两组.
现在我很困惑我应该用哪种方法进行比较?
我可以追加相同组的字符串并进行比较,这只是一个比较说 ( str11 append str12 append str13 ) eqauls ( str21 append str22 append str23 )
要么
我应该进行个人3次比较吗?
if( str11 equals str21 ) {
if( str12 equals str22 ) {
if( str13 equals str23 ) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我进行字符串比较时,由于字符串长度而导致我的性能因素是什么?让我们假设所有字符串都是相同的(大约)长度.
这两个System.Timers.Timer和System.Threading.Timer火在离请求的那些相当不同的时间间隔.例如:
new System.Timers.Timer(1000d / 20);
Run Code Online (Sandbox Code Playgroud)
产生一个每秒发射16次而不是20次的计时器.
为了确保太长的事件处理程序没有副作用,我写了这个小测试程序:
int[] frequencies = { 5, 10, 15, 20, 30, 50, 75, 100, 200, 500 };
// Test System.Timers.Timer
foreach (int frequency in frequencies)
{
int count = 0;
// Initialize timer
System.Timers.Timer timer = new System.Timers.Timer(1000d / frequency);
timer.Elapsed += delegate { Interlocked.Increment(ref count); };
// Count for 10 seconds
DateTime start = DateTime.Now;
timer.Enabled = true;
while (DateTime.Now < start + TimeSpan.FromSeconds(10))
Thread.Sleep(10);
timer.Enabled = false;
// Calculate …Run Code Online (Sandbox Code Playgroud) 我知道如果IP超出子网掩码+本地IP规则,它只能通过网关访问.问题是我不知道如何使用.NET以编程方式获取本地IP地址,也不知道本地子网掩码.你们中的任何人可以帮助我吗?
我将使用此信息从我的批处理SQL插入队列中挤出最大性能.如果SQL服务器属于同一子网,那么它将使用针对最小延迟优化的算法,否则我将使用针对高延迟优化的算法.
有没有人有使用这两种技术的经验?让两者合作的主要困难是什么(如果有的话)?使用这些技术的网站与使用Ajax的普通ASP.NET Web应用程序有何不同?
谢谢!
在Java中是否有一种方法可以使用映射,其中值的类型参数与键的类型参数相关联?我想写的内容如下:
public class Foo {
// This declaration won't compile - what should it be?
private static Map<Class<T>, T> defaultValues;
// These two methods are just fine
public static <T> void setDefaultValue(Class<T> clazz, T value) {
defaultValues.put(clazz, value);
}
public static <T> T getDefaultValue(Class<T> clazz) {
return defaultValues.get(clazz);
}
}
Run Code Online (Sandbox Code Playgroud)
也就是说,只要值的类型与Class对象的类型匹配,我就可以对Class对象存储任何默认值.我不明白为什么不允许这样做,因为我可以确保在设置/获取类型正确的值时.
编辑:感谢cletus的回答.我实际上并不需要地图本身的类型参数,因为我可以确保获取/设置值的方法的一致性,即使它意味着使用一些稍微丑陋的演员表.
寻找通用的WPF工具集.目前正在关注Telerik和Infragistics.那里有更好的选择吗?那两个,哪个更好?
假设我有一些像这样的XML
<channel>
<item>
<title>This is title 1</title>
</item>
</channel>
Run Code Online (Sandbox Code Playgroud)
下面的代码执行我想要的,它将标题输出为字符串
$xml = simplexml_load_string($xmlstring);
echo $xml->channel->item->title;
Run Code Online (Sandbox Code Playgroud)
这是我的问题.下面的代码不会将标题视为该上下文中的字符串,因此我最终得到的是数组中的SimpleXML对象而不是字符串.
$foo = array( $xml->channel->item->title );
Run Code Online (Sandbox Code Playgroud)
我一直在这样做
$foo = array( sprintf("%s",$xml->channel->item->title) );
Run Code Online (Sandbox Code Playgroud)
但这看起来很难看.
无论上下文如何,将SimpleXML对象强制转换为字符串的最佳方法是什么?
在RPC语义中,Erlang有最好的希望,SUN RPC至少有一次,Java RMI最多只有一次,但没有人只有一次语义.
为什么只有一次语义似乎不可行?
例如,如果客户端继续重新发送唯一标记的请求,直到收到回复并且服务器跟踪所有处理的请求以便不复制请求.这不是一次吗?
c# ×3
java ×2
php ×2
string ×2
.net ×1
ajax ×1
asp.net ×1
coalesce ×1
comparison ×1
deviation ×1
frequency ×1
generics ×1
ip ×1
magento ×1
master-pages ×1
networking ×1
rpc ×1
semantics ×1
silverlight ×1
simplexml ×1
timer ×1
uicomponents ×1
windows ×1
wpf ×1
xml ×1