看看这个C#代码:
byte x = 1;
byte y = 2;
byte z = x + y; // ERROR: Cannot implicitly convert type 'int' to 'byte'
Run Code Online (Sandbox Code Playgroud)
对byte
(或short
)类型执行的任何数学运算的结果都隐式地转换回整数.解决方案是将结果显式地转换回一个字节:
byte z = (byte)(x + y); // this works
Run Code Online (Sandbox Code Playgroud)
我想知道的是为什么?它是建筑吗?哲学?
我们有:
int
+ int
=int
long
+ long
=long
float
+ float
=float
double
+ double
=double
那么为什么不呢:
byte
+ byte
=byte
short
+ short
= short
?一点背景:我正在对"小数字"(即<8)执行一长串计算,并将中间结果存储在一个大数组中.使用字节数组(而不是int数组)更快(因为缓存命中).但是通过代码传播的大量字节转换使得它更加难以理解.
我用这个
@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Run Code Online (Sandbox Code Playgroud)
regexp验证电子邮件
([\w\.\-]+)
- 这是针对第一级域名(许多字母和数字,也是点和连字符)
([\w\-]+)
- 这是针对二级域名
((\.(\w){2,3})+)
- 这适用于其他级别域名(从3到无穷大),包括一个点和2或3文字
这个正则表达式有什么问题?
编辑:它与"something@someth.ing"电子邮件不符
我遇到了以下段落:
在Visual Studio中编译代码时,IDE中的"调试与发布"设置对性能几乎没有差别......生成的代码几乎相同.C#编译器并没有真正进行任何优化.C#编译器只是吐出IL ...而在运行时它是执行所有优化的JITer.JITer确实具有调试/释放模式,这对性能产生巨大影响.但这并不能决定你是否运行项目的调试或发布配置,而是关闭是否附加了调试器."
有人可以指导我一篇能够证明这一点的微软文章吗?
谷歌搜索" C#debug vs release performance "主要返回结果,说" Debug有很多性能损失 "," 发布已经优化 "," 不要将调试部署到生产中 ".
我如何在C#中将数据从字符串转换为long?
我有数据
String strValue[i] ="1100.25";
Run Code Online (Sandbox Code Playgroud)
现在我想要它
long l1;
Run Code Online (Sandbox Code Playgroud) 是否可以从控制器重定向到不同的视图?
例如,我的所有控制器都从一个自定义控制器继承,该控制器具有一个构造函数,如果不满足某些条件,我想将其重定向到不同的视图.希望有道理.
我收到以下WatiN错误:
未处理的异常:System.IO.FileLoadException:无法加载文件或组装'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = db7cfd3acb5 ad44e'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)文件名:'Interop.SHDocVw,Version = 1.1.0.0,Culture = neutral,PublicKeyToken = db
我将shdocvw.dll从System32复制到bin目录,但它仍然给我同样的问题.
我有一个字符串000000000100
,我想转换为1.00,反之亦然.
前导零将被删除,最后两位是小数.
我举一个例子:
000000001000 <=> 10.00
000000001005 <=> 10.05
000000331150 <=> 3311.50
Run Code Online (Sandbox Code Playgroud)
下面是我正在尝试的代码,它给我的结果没有小数:
amtf = string.Format("{0:0.00}", amt.TrimStart(new char[] {'0'}));
Run Code Online (Sandbox Code Playgroud) 我正在使用交叉编译器.我的代码是:
class WindowsTimer{
public:
WindowsTimer(){
_frequency.QuadPart = 0ull;
}
private:
static LARGE_INTEGER _frequency;
};
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
对WindowsTimer :: _ frequency'的未定义引用
我也尝试将其改为
LARGE_INTEGER _frequency.QuadPart = 0ull;
Run Code Online (Sandbox Code Playgroud)
要么
static LARGE_INTEGER _frequency.QuadPart = 0ull;
Run Code Online (Sandbox Code Playgroud)
但我仍然得到错误.
有谁知道为什么?
有关String Basics的MSDN文章显示了这一点:
string str = "hello";
string nullStr = null;
string emptyStr = "";
string tempStr = str + nullStr; // tempStr = "hello"
bool b = (emptyStr == nullStr);// b = false;
string newStr = emptyStr + nullStr; // creates a new empty string
int len = nullStr.Length; // throws NullReferenceException
Run Code Online (Sandbox Code Playgroud)
为什么不与null连接抛出空引用异常?它是为了让程序员的生活更轻松,这样他们在连接之前不必检查null吗?
c# ×7
.net ×2
string ×2
asp.net ×1
asp.net-mvc ×1
c++ ×1
debugging ×1
int ×1
long-integer ×1
performance ×1
regex ×1
release ×1
validation ×1
watin ×1