Tag: C#的

获取.Net程序集的PublicKeyToken

find程序集公钥密码的最简单方法是什么? 我能想到的最简单的方法是简单的右键单击,获得公钥,但是这个function不存在,也许有一个VS扩展。 如果扩展名可用,我使用VS2010

如何从string的开头或结尾删除所有空格?

如何从string的右端和左端删除所有空格,如下所示: "hello"返回"hello" "hello "返回"hello" " hello "返回"hello" " hello world "回归"hello world"

为什么sizeof(a?true:false)给出四个字节的输出?

我有一个关于sizeof运算符与三元运算符的一小段代码: #include <stdio.h> #include <stdbool.h> int main() { bool a = true; printf("%zu\n", sizeof(bool)); // Ok printf("%zu\n", sizeof(a)); // Ok printf("%zu\n", sizeof(a ? true : false)); // Why 4? return 0; } 输出( GCC ): 1 1 4 // Why 4? 但在这儿, printf("%zu\n", sizeof(a ? true : false)); // Why 4? 三元运算符返回booleantypes,size的booltypes是C中的1个字节。 那么为什么sizeof(a ? true […]

为什么有人会使用C + +?

尽pipe人们似乎喜欢抱怨 C ++,但我还是无法find很多证据来certificate为什么要selectC ++。 C似乎没有得到几乎一样的低估,如果C ++有这些问题,为什么不能把自己限制在C子集? 你有什么想法/经验?

为什么结构alignment取决于字段types是基本的还是用户定义的?

在Noda Time v2中,我们正在转向纳秒级的分辨率。 这意味着我们不能再使用一个8字节的整数来表示我们感兴趣的整个时间范围。这促使我调查了Noda Time(许多)结构的内存使用情况,这又导致了我在CLR的协调决定中发现一个轻微的怪异。 首先,我意识到这是一个实现的决定,而且默认行为随时可能改变。 我意识到我可以使用[StructLayout]和[FieldOffset] 来修改它,但我宁愿想出一个解决scheme,如果可能的话,不要求这样做。 我的核心场景是,我有一个struct ,其中包含一个引用types的字段和其他两个值types的字段,其中这些字段是简单的包装int 。 我曾希望在64位CLR上表示为16个字节(参考8个,其他4个),但由于某种原因,它使用了24个字节。 我使用数组测量空间,顺便说一下 – 我了解,在不同的情况下,布局可能会有所不同,但这种感觉像是一个合理的起点。 以下是一个演示此问题的示例程序: using System; using System.Runtime.InteropServices; #pragma warning disable 0169 struct Int32Wrapper { int x; } struct TwoInt32s { int x, y; } struct TwoInt32Wrappers { Int32Wrapper x, y; } struct RefAndTwoInt32s { string text; int x, y; } struct RefAndTwoInt32Wrappers […]

如何优雅地处理时区

我有一个与使用应用程序的用户不同的时区托pipe的网站。 除此之外,用户可以有一个特定的时区。 我想知道其他SO用户和应用程序如何处理这个? 最明显的部分是在DB内部,date/时间以UTC存储。 在服务器上时,所有的date/时间应该以UTC来处理。 但是,我看到了三个我想要克服的问题: 以UTC获取当前时间(使用DateTime.UtcNow轻松解决)。 从数据库中提取date/时间并将其显示给用户。 在不同的视图上可能有很多打印date的电话。 我正在考虑可以解决这个问题的视图和控制器之间的一层。 或者在DateTime上有一个自定义的扩展方法(见下文)。 主要的缺点是,在视图中使用date时间的每个位置都必须调用扩展方法! 这也会增加使用类似JsonResult 。 你不能再轻易调用Json(myEnumerable) ,它必须是Json(myEnumerable.Select(transformAllDates)) 。 也许AutoMapper可以帮助在这种情况下? 从用户获取input(本地到UTC)。 例如,使用date发布表单需要将date转换为UTC。 首先想到的是创build一个自定义的ModelBinder 。 以下是我认为在视图中使用的扩展: public static class DateTimeExtensions { public static DateTime UtcToLocal(this DateTime source, TimeZoneInfo localTimeZone) { return TimeZoneInfo.ConvertTimeFromUtc(source, localTimeZone); } public static DateTime LocalToUtc(this DateTime source, TimeZoneInfo localTimeZone) { source = DateTime.SpecifyKind(source, DateTimeKind.Unspecified); return […]

“#pragma comment”是什么意思?

#pragma comment在以下内容中的含义是什么? #pragma comment(lib, "kernel32") #pragma comment(lib, "user32")

我如何从8位整数获得大于8位的值?

我追踪了这个小gem背后的一个非常讨厌的虫子。 我知道,根据C ++规范,有符号溢出是未定义的行为,但只有当值扩展到位宽sizeof(int)时发生溢出。 据我了解,只要sizeof(char) < sizeof(int) ,增加一个char不应该是未定义的行为。 但是这并不能解释c如何获得不可能的价值。 作为一个8位整数, c如何保持大于其位宽的值? 码 // Compiled with gcc-4.7.2 #include <cstdio> #include <stdint.h> #include <climits> int main() { int8_t c = 0; printf("SCHAR_MIN: %i\n", SCHAR_MIN); printf("SCHAR_MAX: %i\n", SCHAR_MAX); for (int32_t i = 0; i <= 300; i++) printf("c: %i\n", c–); printf("c: %i\n", c); return 0; } 产量 SCHAR_MIN: -128 […]

C ++静态虚拟成员?

有可能在C ++中有一个static和virtual的成员函数? 显然,没有一个简单的方法来做到这一点( static virtual member();是一个编译错误),但至less有一种方法来实现相同的效果? IE: struct Object { struct TypeInformation; static virtual const TypeInformation &GetTypeInformation() const; }; struct SomeObject : public Object { static virtual const TypeInformation &GetTypeInformation() const; }; 在一个实例( object->GetTypeInformation() )和一个类( SomeObject::GetTypeInformation() )上使用SomeObject::GetTypeInformation()是有意义的,这对于比较和对模板来说是非常重要的。 我能想到的唯一方法就是每个类编写两个函数/一个函数和一个常量,或者使用macros。 任何其他解决scheme

Char.IsDigit()和Char.IsNumber()在C#中的区别

Char.IsDigit()和Char.IsNumber()在C#中有什么Char.IsNumber() ?