我正在查看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#功能的精神.
Math.Pow().NET中的内置函数double为double指数提供基础并返回double结果.
使用整数执行相同操作的最佳方法是什么?
补充:似乎可以将Math.Pow()结果转换为(int),但这总是产生正确的数字而没有舍入错误?
经过深思熟虑并着眼于实施ArrayList,我个人真的想说它已经过时了,我没有理由在2.0之后使用这个类.但由于它没有被标记为[Obsolete],是否有任何我不知道的用法,比使用泛型类更好?如果是,请举个例子.谢谢.
编辑让我们以List<T>一个例子来说,它提供了所有函数ArrayList,并且它是强类型的.那么我们什么时候需要使用ArrayList?也许有时它会有更好的表现?我不知道.如果你能告诉我一些特别的东西,我感激不尽ArrayList.
我正在尝试将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)
出于好奇,有没有办法让这个工作不使用额外的方法?
问候
在任务返回异步方法结束时,如果我调用另一个异步方法,我可以使用await它或return它的任务.每个的后果是什么?
Task FooAsync()
{
return BazAsync(); // Option A
}
async Task BarAsync()
{
await BazAsync(); // Option B
}
Run Code Online (Sandbox Code Playgroud) 如何编辑列表视图中的项目和子项目?假设我有一个包含3列和子项的列表视图,
__PRE__
我如何将这样的项目添加到listview中?如果我需要在运行时在触发事件时进行编辑,我将如何编辑让我们说按索引[]的行名称?
使用以前版本的Visual Studio,我使用Kevin Pilch-Bisson的脚本来格式化我的解决方案中的所有C#文件.
VS2012放弃了宏支持,因此不再起作用.
如何轻松格式化VS2012中的所有文档?
请考虑以下代码:
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,我不喜欢写错误.所以我的问题是" 我怎样才能确保我永远不会再写这个错误? "
如何从批处理文件创建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找到
c# ×9
.net ×3
arraylist ×1
async-await ×1
batch-file ×1
collections ×1
formatting ×1
generics ×1
integer ×1
listview ×1
math ×1
obsolete ×1