小编Rak*_*was的帖子

byte + byte = int ...为什么?

看看这个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数组)更快(因为缓存命中).但是通过代码传播的大量字节转换使得它更加难以理解.

c# type-conversion

356
推荐指数
8
解决办法
6万
查看次数

正则表达式电子邮件验证

我用这个

@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
Run Code Online (Sandbox Code Playgroud)

regexp验证电子邮件

([\w\.\-]+)- 这是针对第一级域名(许多字母和数字,也是点和连字符)

([\w\-]+)- 这是针对二级域名

((\.(\w){2,3})+)- 这适用于其他级别域名(从3到无穷大),包括一个点和2或3文字

这个正则表达式有什么问题?

编辑:它与"something@someth.ing"电子邮件不符

c# regex validation

206
推荐指数
15
解决办法
41万
查看次数

调试与发布性能

我遇到了以下段落:

在Visual Studio中编译代码时,IDE中的"调试与发布"设置对性能几乎没有差别......生成的代码几乎相同.C#编译器并没有真正进行任何优化.C#编译器只是吐出IL ...而在运行时它是执行所有优化的JITer.JITer确实具有调试/释放模式,这对性能产生巨大影响.但这并不能决定你是否运行项目的调试或发布配置,而是关闭是否附加了调试器."

来源在这里,播客在这里.

有人可以指导我一篇能够证明这一点的微软文章吗?

谷歌搜索" C#debug vs release performance "主要返回结果,说" Debug有很多性能损失 "," 发布已经优化 "," 不要将调试部署到生产中 ".

c# debugging performance release

130
推荐指数
4
解决办法
7万
查看次数

如何在c#中将数据从字符串转换为long

我如何在C#中将数据从字符串转换为long?

我有数据

String strValue[i] ="1100.25";
Run Code Online (Sandbox Code Playgroud)

现在我想要它

long l1;
Run Code Online (Sandbox Code Playgroud)

c# string type-conversion long-integer

87
推荐指数
6
解决办法
20万
查看次数

85
推荐指数
6
解决办法
17万
查看次数

ASP.Net MVC重定向到不同的视图

是否可以从控制器重定向到不同的视图?

例如,我的所有控制器都从一个自定义控制器继承,该控制器具有一个构造函数,如果不满足某些条件,我想将其重定向到不同的视图.希望有道理.

.net asp.net asp.net-mvc

83
推荐指数
3
解决办法
20万
查看次数

WatiN错误无法加载程序集

我收到以下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目录,但它仍然给我同样的问题.

watin

73
推荐指数
3
解决办法
2万
查看次数

如何将字符串格式化为金钱

我有一个字符串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)

c#

71
推荐指数
6
解决办法
25万
查看次数

未定义的静态成员引用

我正在使用交叉编译器.我的代码是:

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)

但我仍然得到错误.

有谁知道为什么?

c++ cross-compiling undefined-reference

70
推荐指数
4
解决办法
6万
查看次数

为什么在字符串合法中添加null?

有关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# language-design

64
推荐指数
2
解决办法
3万
查看次数