小编Jay*_*uzi的帖子

为什么C#集合初始化程序以这种方式工作?

我正在查看C#集合初始化程序,发现实现非常务实,但也与C#中的任何其他内容完全不同

我能够创建这样的代码:

using System;
using System.Collections;

class Program
{
    static void Main()
    {
        Test test = new Test { 1, 2, 3 };
    }
}

class Test : IEnumerable
{
    public IEnumerator GetEnumerator()
    {
        throw new NotImplementedException();
    }

    public void Add(int i) { }
}
Run Code Online (Sandbox Code Playgroud)

由于我满足了编译器(已实现IEnumerable和a public void Add)的最低要求,因此无效,但显然没有价值.

我想知道是什么阻止了C#团队创建更严格的要求?换句话说,为了编译这种语法,为什么编译器不要求类型实现ICollection?这似乎更符合其他C#功能的精神.

c# collections

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

你如何在C#中进行*整数*取幂?

Math.Pow().NET中的内置函数doubledouble指数提供基础并返回double结果.

使用整数执行相同操作的最佳方法是什么?

补充:似乎可以将Math.Pow()结果转换为(int),但这总是产生正确的数字而没有舍入错误?

c# math integer exponentiation

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

为什么ArrayList没有标记为[已废弃]?

经过深思熟虑并着眼于实施ArrayList,我个人真的想说它已经过时了,我没有理由在2.0之后使用这个类.但由于它没有被标记为[Obsolete],是否有任何我不知道的用法,比使用泛型类更好?如果是,请举个例子.谢谢.

编辑让我们以List<T>一个例子来说,它提供了所有函数ArrayList,并且它是强类型的.那么我们什么时候需要使用ArrayList?也许有时它会有更好的表现?我不知道.如果你能告诉我一些特别的东西,我感激不尽ArrayList.

.net c# generics arraylist obsolete

38
推荐指数
3
解决办法
4138
查看次数

将'enum'数组转换为'int'数组

我正在尝试将Enum数组转换为int数组:

public enum TestEnum
{
Item1,
Item2
}

int[] result = Array.ConvertAll<TestEnum, int>(enumArray, new Converter<TestEnum, int>(Convert.ToInt32));
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当在Array.ConvertAll中使用时,Convert.ToInt32不起作用,所以我不得不做一些更改:

int[] result = Array.ConvertAll<TestEnum, int>(enumArray, new Converter<TestEnum, int>(ConvertTestEnumToInt));

public static int ConvertTestEnumToInt(TestEnum te)
{
return (int)te;
}
Run Code Online (Sandbox Code Playgroud)

出于好奇,有没有办法让这个工作不使用额外的方法?

问候

.net c#

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

哪种类型可以节省百分比

是否适合使用double类型来存储百分比值(例如商店应用程序中的折扣百分比),或者使用该decimal类型会更好吗?

.net c#

36
推荐指数
3
解决办法
1万
查看次数

在异步方法结束时,我应该返回还是等待?

在任务返回异步方法结束时,如果我调用另一个异步方法,我可以使用await它或return它的任务.每个的后果是什么?

    Task FooAsync()
    {
        return BazAsync();  // Option A
    }

    async Task BarAsync()
    {
        await BazAsync(); // Option B
    }
Run Code Online (Sandbox Code Playgroud)

c# async-await

35
推荐指数
1
解决办法
4538
查看次数

C#:如何在列表视图中编辑项目和子项目?

如何编辑列表视图中的项目和子项目?假设我有一个包含3列和子项的列表视图,

__PRE__

我如何将这样的项目添加到listview中?如果我需要在运行时在触发事件时进行编辑,我将如何编辑让我们说按索引[]的行名称?

c# listview

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

如何格式化Visual Studio 2012中的所有文件?

使用以前版本的Visual Studio,我使用Kevin Pilch-Bisson的脚本来格式化我的解决方案中的所有C#文件.

VS2012放弃了宏支持,因此不再起作用.

如何轻松格式化VS2012中的所有文档?

c# formatting visual-studio-2012

28
推荐指数
2
解决办法
7764
查看次数

是否有自动方式来捕捉财产自我分配?

请考虑以下代码:

class C
{
    public int A { get; set; }
    public int B;

    public C(int a, int b)
    {
        this.A = A;    // Oops, bug! Should be `this.A = a`. No warning
        this.B = B;    // Oops, bug! Should be `this.B = b`. `warning CS1717: Assignment made to same variable; did you mean to assign something else?`
    }
}
Run Code Online (Sandbox Code Playgroud)

A并且B几乎完全相同,但有一个我会想念的错误.

有没有办法在编译时抓住第一个案例?

编辑:一些答案和评论想要向我解释,属性和字段不是一回事.我已经知道了.他们解释了为什么编译器在这里没有警告; 我明白了.但是我写了一个bug,我不喜欢写错误.所以我的问题是" 我怎样才能确保我永远不会再写这个错误? "

c#

26
推荐指数
1
解决办法
961
查看次数

从批处理文件创建exe的快捷方式

如何从批处理文件创建exe的快捷方式.

我试过了

call link.bat "c:\program Files\App1\program1.exe" "C:\Documents and Settings\%USERNAME%\Desktop" "C:\Documents and Settings\%USERNAME%\Start Menu\Programs" "Program1 shortcut"
Run Code Online (Sandbox Code Playgroud)

但它没有奏效.

link.bat可以在http://www.robvanderwoude.com/amb_shortcuts.html找到

batch-file

24
推荐指数
3
解决办法
9万
查看次数