小编Mar*_*urd的帖子

何时使用struct?

什么时候应该在C#中使用struct而不是class?我的概念模型是当项只是值类型的集合时使用结构.一种逻辑上将它们组合在一起形成一个有凝聚力的整体的方法.

我在这里遇到了这些规则:

  • 结构应该表示单个值.
  • 结构应具有小于16个字节的内存占用.
  • 创建后不应更改结构.

这些规则有效吗?结构在语义上意味着什么?

c# struct

1347
推荐指数
23
解决办法
26万
查看次数

读/写'扩展'文件属性(C#)

我试图找出如何读取/写入C#中的扩展文件属性,例如,您可以在Windows资源管理器中看到的注释,比特率,访问日期,类别等.任何想法如何做到这一点?编辑:我主要是读/写视频文件(AVI/DIVX/...)

c# extended-properties

100
推荐指数
8
解决办法
10万
查看次数

如何在Visual Basic .NET中声明Char文字?

Option Strict On:

Dim theLetterA As Char = "A"
Run Code Online (Sandbox Code Playgroud)

返回有关将字符串转换"A"为a 的错误Char.

输入Char文字的语法是什么?

vb.net literals

87
推荐指数
2
解决办法
4万
查看次数

表达式<Func <>>和Func <>之间的区别

举个例子,为什么大多数LINQ运算符都接受Expression<Func<TSource>>它的等价物Func<TSource>呢?

使用泛型Expression类而不是直接lambda语法的好处/原因是什么?

c# linq

77
推荐指数
4
解决办法
2万
查看次数

在循环内部或外部使用不安全是否有任何区别?

我过去从不需要使用不安全的东西,但是现在我需要它来处理一个操纵位图的指针.

我找不到任何其他方面的文档,但我想更好地理解不安全是如何工作的,如果在循环内部或外部使用它会有什么不同.

做得更好:

unsafe
{
    for (int x = 0; x < maxX; x++)
    {
        for (int y = 0; y < maxY; y++)
        {           
            //Unsafe pointer operations here.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

还是做?:

for (int x = 0; x < maxX; x++)
{
    for (int y = 0; y < maxY; y++)
    {   
        unsafe
        {       
            //Unsafe pointer operations here.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# unsafe

65
推荐指数
2
解决办法
2131
查看次数

相当于.NET Framework 3.5的Tuple(.NET 4)

.NET Framework 3.5中是否存在与.NET 4 Tuple等效的类?

我想使用它来从方法返回多个值,而不是创建一个struct.

c# tuples .net-3.5

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

C#4.0中的命名参数和泛型类型推断

我一直在编程,假设在C#4.0中调用方法时,为参数提供名称不会影响结果,除非这样做是"跳过"一个或多个可选参数.

所以我发现以下行为有点惊讶:

给定一个获取a的方法Func<T>,执行它并返回结果:

public static T F<T>(Func<T> f)
{
    return f();
}
Run Code Online (Sandbox Code Playgroud)

以及上述方法可见的另一种方法:

static void Main()
{
    string s;
Run Code Online (Sandbox Code Playgroud)

调用F(没有命名参数)编译没有任何问题:

    s = F<string>(() => "hello world"); // with explicit type argument <string>
    s = F(() => "hello world"); // with type inference
Run Code Online (Sandbox Code Playgroud)

当使用命名参数时......

    s = F<string>(f: () => "hello world");
Run Code Online (Sandbox Code Playgroud)

...使用显式类型参数的上述代码行仍然可以编译而没有问题.也许并不太令人惊讶,如果安装了ReSharper,它将表明"类型参数规范是多余的".

但是,删除类型参数时...

    s = F(f: () => "hello world");
Run Code Online (Sandbox Code Playgroud)

C#编译器将报告此错误:

无法从用法推断出方法'Program.F(System.Func)'的类型参数.尝试显式指定类型参数.

对于命名参数和类型推断之间的这种交互,是否有逻辑解释?

这种行为是否记录在语言规范的某处?

我明白,根本没有必要为这个论点命名.但是,我在一个更复杂的场景中发现了这种行为,我认为在我的方法调用中为参数命名以用于内部文档目的可能是有意义的.我不是问如何解决这个问题.我试图理解一些语言的细节.

为了使事情更有趣,我发现以下所有编译都没有问题:

    Func<string> func = () => "hello world";
    s = F<string>(func);
    s = F(func); …
Run Code Online (Sandbox Code Playgroud)

c# generics type-inference compiler-errors c#-4.0

57
推荐指数
2
解决办法
2868
查看次数

如果不存在,如何在VB中创建文件夹?

我给自己写了一个小的下载应用程序,这样我就可以轻松地从我的服务器中获取一组文件,并将它们全部放到一台干净安装Windows的新电脑上,而无需实际上网.不幸的是我在创建我想要放入的文件夹时遇到问题,我不确定如何去做.

我希望我的程序能够下载应用程序 program files\any name here\

所以基本上我需要一个函数来检查文件夹是否存在,如果不存在则创建它.

vb.net directory install

51
推荐指数
6
解决办法
27万
查看次数

.NET与GMT标准时间之间的差异

在.NET中,以下语句返回不同的值:

Response.Write(
  TimeZoneInfo.ConvertTime(
    DateTime.Parse("2010-07-01 5:30:00.000"),
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))
  );
// displays 7/1/2010 1:30:00 PM
Run Code Online (Sandbox Code Playgroud)

..还有这个...

Response.Write(
  TimeZoneInfo.ConvertTime(
    DateTime.Parse("2010-07-01 5:30:00.000"),
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("UTC"))
  );
// displays 7/1/2010 12:30:00 PM
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我认为UTC和GMT标准时间相当.


更新

经过进一步测试,我发现以下内容似乎是等效的:

"世界标准时间"

"格林威治标准时间"

"摩洛哥标准时间"

而在夏季,以下情况有所不同:

"GMT标准时间"

也许我的问题应该是,为什么"格林威治标准时间"和"格林威治标准时间标准时间"有所不同?

结束更新

.net timezone utc gmt

47
推荐指数
5
解决办法
6万
查看次数

我应该在VB/VBA中使用Call关键字吗?

Call在VB/VBA中调用subs时使用关键字.我知道这是可选的,但是使用它还是不让它更好?我一直以为它更明确,但也许只是噪音.

另外,我在另一个论坛上看到了这个:使用Call关键字更快,因为它知道它不会返回任何值,因此它不需要设置任何堆栈空间来为返回值腾出空间.

vb.net vb6 vba call

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